有没有办法使用flex捕获桌面屏幕截图?

时间:2015-01-05 12:19:22

标签: actionscript-3 flex actionscript air

我想在我的flex应用程序中捕获整个屏幕。我google了很多,但找到了方法只捕获空气窗口屏幕,我想捕获用户的整个屏幕。我有一种方法使用“NitroScreenCap”,但我不明白如何在我的应用程序中实现这一点。有人可以建议我解决这个问题吗?

2 个答案:

答案 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>

答案 1 :(得分:-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服务器上,但我认为你也可以使用

  

new FileReference()。save(screen)

相关问题