Actionscript 3 是否有任何方法可以使用flex捕获桌面屏幕截图?
我想在flex应用程序中捕获整个屏幕。我在谷歌上搜索了很多,但只找到了捕获空气窗屏幕的方法,我想捕获用户的整个屏幕。我找到了一种使用NitroScreenCap的方法,但我不明白如何在我的应用程序中实现它。有人能为我推荐一些解决方案吗?要在我的Flex应用程序中捕获DisplayObject,我使用这个类 以下是他使用的代码示例:Actionscript 3 是否有任何方法可以使用flex捕获桌面屏幕截图?,actionscript-3,apache-flex,actionscript,air,Actionscript 3,Apache Flex,Actionscript,Air,我想在flex应用程序中捕获整个屏幕。我在谷歌上搜索了很多,但只找到了捕获空气窗屏幕的方法,我想捕获用户的整个屏幕。我找到了一种使用NitroScreenCap的方法,但我不明白如何在我的应用程序中实现它。有人能为我推荐一些解决方案吗?要在我的Flex应用程序中捕获DisplayObject,我使用这个类 以下是他使用的代码示例: var c2 : DisplayObject = c.getChildAt(0) as DisplayObject; var bd:BitmapData = n
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.savescreen
为了在Flex应用程序中捕获DisplayObject,我使用了类 以下是他使用的代码示例:
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.savescreen
您可以使用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>
您可以使用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>
你说的是在浏览器中运行的web应用程序吗?那么答案是:你不能。否则,请添加有关您的环境的更多信息。我正在使用flex和AdobeAIR创建一个窗口应用程序。我想在一段时间内从这个窗口应用程序捕获桌面屏幕。我想你必须使用一个-这就是NitroScreenCap所做的。你说的是在浏览器中运行的web应用程序吗?那么答案是:你不能。否则,请添加有关您的环境的更多信息。我正在使用flex和AdobeAIR创建一个窗口应用程序。我想在一段时间内从这个窗口应用程序中捕获桌面屏幕。我想你必须使用一个——NitroScreenCap就是这么做的。谢谢你的回复。但这段代码只用于捕获flex屏幕,我想使用flex捕获用户的整个屏幕。谢谢您的回复。但这段代码只用于捕获flex屏幕,我想使用flex捕获用户的整个屏幕。感谢您的回复,但我需要在打印屏幕键工作时捕获用户的整个屏幕。希望有一个积极的回应。谢谢你的答复,但我需要捕捉用户的整个屏幕作为打印屏幕键的作品。希望得到积极的回应。