2015-01-05 24 views
2

我想在我的flex应用程序中捕捉整个屏幕。我GOOGLE了很多,但找到了方法来捕获空气窗口屏幕,我想捕获用户的整个屏幕。我有一种使用“NitroScreenCap”的方式,但是我不理解如何在我的应用程序中实现此功能。任何人都可以请建议我一些这样的工作解决方案?有没有什么办法可以捕获使用flex的桌面屏幕截图?

+0

您是否在谈论在浏览器中运行的Web应用程序?那么答案是:你不能。否则,请添加有关您的环境的更多信息。 – dogsgod

+0

我使用flex和adobe air创建窗口应用程序。我想在某个时间间隔内从这个窗口应用程序捕获桌面屏幕。 –

+0

我认为你必须使用[本机扩展的AIR](http://help.adobe.com/en_US/air/extensions/index.html) - 这就是NitroScreenCap所做的。 – splash

回答

-2

要在我的Flex应用程序中捕获DisplayObject,我使用类PNGEnc

这里是他使用的代码示例:

var c2 : DisplayObject = c.getChildAt(0) as DisplayObject; 

var bd:BitmapData = new BitmapData(c2.width,c2.height); 
bd.draw(c2);         // Graph copy 
var screen:ByteArray = PNGEnc.encode(bd);  // PNG format conversion 

接下来,我把我的ByteArray将其保存在Java中的服务器上,但我想你也可以使用

新的FileReference( ).save(屏幕)

+0

感谢您的回复,但我需要捕获用户的整个屏幕作为打印屏幕的关键作品。希望得到积极的回应。 –

0

您可以使用ImageSnapshot.captureImage()捕捉到你的Flex应用程序的屏幕,尝试这个例子:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
     layout="vertical" 
     verticalAlign="middle" 
     backgroundColor="white"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.core.IUIComponent; 
      import mx.graphics.ImageSnapshot; 

      private function takeSnapshot(source:IBitmapDrawable):void { 
       var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(source); 
       var imageByteArray:ByteArray = imageSnap.data as ByteArray; 
       swfLoader.load(imageByteArray); 
      } 
     ]]> 
    </mx:Script> 

    <mx:Array id="arr"> 
     <mx:Object col1="Row 1, Col 1" col2="Row 1, Col 2" /> 
     <mx:Object col1="Row 2, Col 1" col2="Row 2, Col 2" /> 
     <mx:Object col1="Row 3, Col 1" col2="Row 3, Col 2" /> 
     <mx:Object col1="Row 4, Col 1" col2="Row 4, Col 2" /> 
     <mx:Object col1="Row 5, Col 1" col2="Row 5, Col 2" /> 
     <mx:Object col1="Row 6, Col 1" col2="Row 6, Col 2" /> 
    </mx:Array> 

    <mx:ApplicationControlBar dock="true"> 
     <mx:Button label="Take snapshot of DataGrid" 
       click="takeSnapshot(dataGrid);" /> 
    </mx:ApplicationControlBar> 

    <mx:HBox> 
     <mx:DataGrid id="dataGrid" dataProvider="{arr}" /> 

     <mx:SWFLoader id="swfLoader"> 
      <mx:filters> 
       <mx:DropShadowFilter /> 
      </mx:filters> 
     </mx:SWFLoader> 
    </mx:HBox> 

</mx:Application> 
+0

感谢您的回复。但是这段代码只是捕获flex屏幕,我想用flex捕捉用户的整个屏幕。 –

相关问题