Actionscript 3 是否有任何方法可以使用flex捕获桌面屏幕截图?

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

我想在flex应用程序中捕获整个屏幕。我在谷歌上搜索了很多,但只找到了捕获空气窗屏幕的方法,我想捕获用户的整个屏幕。我找到了一种使用NitroScreenCap的方法,但我不明白如何在我的应用程序中实现它。有人能为我推荐一些解决方案吗?

要在我的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


为了在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捕获用户的整个屏幕。感谢您的回复,但我需要在打印屏幕键工作时捕获用户的整个屏幕。希望有一个积极的回应。谢谢你的答复,但我需要捕捉用户的整个屏幕作为打印屏幕键的作品。希望得到积极的回应。