Actionscript 3 如何获取SWF的屏幕盖并将其下载到用户';s桌面与AS3?

Actionscript 3 如何获取SWF的屏幕盖并将其下载到用户';s桌面与AS3?,actionscript-3,screenshot,bitmapdata,Actionscript 3,Screenshot,Bitmapdata,有人知道如何在AS3中获取屏幕帽并将其下载到桌面吗?我知道有马里奥·克林根曼的,但它在AS3中不起作用 您可以尝试以下方法: var bitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000); bitmapData.draw(workspace); var byteArray:ByteArray = bitmapData; var request:URLRequest =

有人知道如何在AS3中获取屏幕帽并将其下载到桌面吗?我知道有马里奥·克林根曼的,但它在AS3中不起作用

您可以尝试以下方法:

var bitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);
bitmapData.draw(workspace);
var byteArray:ByteArray = bitmapData;

var request:URLRequest = new URLRequest ( 'yourserver/save.php' );
var loader: URLLoader = new URLLoader();
request.contentType = 'application/octet-stream';
request.method = URLRequestMethod.POST;
request.data = byteArray;
loader.load( request );

//and save.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>save</title>
</head>

<body>
<?php

$fp = fopen( 'file.txt', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ]  );
fclose( $fp );

echo "result: " + $fp;
 ?>
</body>
</html>
var-bitmapData:bitmapData=new-bitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);
bitmapData.draw(工作空间);
var byteArray:byteArray=位图数据;
var-request:URLRequest=newurlrequest('yourserver/save.php');
变量加载器:URLLoader=新的URLLoader();
request.contentType='application/octet stream';
request.method=URLRequestMethod.POST;
request.data=byteArray;
加载(请求);
//和save.php
拯救
此外,您还可以使用带有JPEG编码器的,并且有大量的。您可以尝试以下方法:

var bitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);
bitmapData.draw(workspace);
var byteArray:ByteArray = bitmapData;

var request:URLRequest = new URLRequest ( 'yourserver/save.php' );
var loader: URLLoader = new URLLoader();
request.contentType = 'application/octet-stream';
request.method = URLRequestMethod.POST;
request.data = byteArray;
loader.load( request );

//and save.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>save</title>
</head>

<body>
<?php

$fp = fopen( 'file.txt', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ]  );
fclose( $fp );

echo "result: " + $fp;
 ?>
</body>
</html>
var-bitmapData:bitmapData=new-bitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);
bitmapData.draw(工作空间);
var byteArray:byteArray=位图数据;
var-request:URLRequest=newurlrequest('yourserver/save.php');
变量加载器:URLLoader=新的URLLoader();
request.contentType='application/octet stream';
request.method=URLRequestMethod.POST;
request.data=byteArray;
加载(请求);
//和save.php
拯救

另外,您可以使用带有JPEG编码器的,并且有大量的。您可以使用draw方法在BitmapData对象中绘制任何DisplayObject。但是,无法绘制阶段或根应用程序类(安全错误),因此必须将应用程序包含在主精灵中,然后将主精灵添加到此阶段

public function createSnapShot(displayObject:DisplayObject):BitmapData
{
    var nWidth:Number = displayObject.width;
    var nHeight:Number = displayObject.height;
    var bmd:BitmapData = new BitmapData(nWidth, nHeight, true, 0x00000000);
    bmd.draw(displayObject);
    return bmd;
}
一旦有了位图数据,就需要将其序列化为ByteArray,以便使用URLLoader发送。要序列化,您需要FlexSDK附带的JPEG编码器,也可以使用adobe核心库提供的编码器

在本例中,AMFPHP用于将位图数据往返保存到服务器并返回到agaib,它应该是您的一个良好起点,但您也可以查看发送多部分表单数据


您可以使用draw方法在BitmapData对象中绘制任何DisplayObject。但是,无法绘制阶段或根应用程序类(安全错误),因此必须将应用程序包含在主精灵中,然后将主精灵添加到此阶段

public function createSnapShot(displayObject:DisplayObject):BitmapData
{
    var nWidth:Number = displayObject.width;
    var nHeight:Number = displayObject.height;
    var bmd:BitmapData = new BitmapData(nWidth, nHeight, true, 0x00000000);
    bmd.draw(displayObject);
    return bmd;
}
一旦有了位图数据,就需要将其序列化为ByteArray,以便使用URLLoader发送。要序列化,您需要FlexSDK附带的JPEG编码器,也可以使用adobe核心库提供的编码器

在本例中,AMFPHP用于将位图数据往返保存到服务器并返回到agaib,它应该是您的一个良好起点,但您也可以查看发送多部分表单数据


除了其他答案,请注意Flash Player 10可以直接将文件保存在用户的HD上,而无需将其发送到服务器。。。请参见

除其他答案外,请注意Flash Player 10可以直接将文件保存在用户的HD上,而无需将其发送到服务器。。。请参见

我是否必须将ByteArray发送到服务器才能将其保存为文件?使用FileReference.save()怎么样?没关系。我刚刚意识到FileReference.save()只在Flash 10中有效。我是否必须将ByteArray发送到服务器才能将其保存为文件?使用FileReference.save()怎么样?没关系。我刚刚意识到FileReference.save()只适用于Flash 10。