AS3舞台屏幕截图到硬盘驱动器保存 [英] AS3 stage screen shot to hard drive save

查看:212
本文介绍了AS3舞台屏幕截图到硬盘驱动器保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个拖放的Flash游戏,在你将所有的可动片我想有一个按钮,可以让一个人保存屏幕快照整个舞台的。

我搜索不同的样品,并不能得到这code工作。

下面是AS3

  snap_btn.addEventListener(MouseEvent.CLICK,快照);

快照功能(EVT:MouseEvent)方法:无效
{

进口com.adobe.images.JPGEn codeR;

VAR jpgSource:的BitmapData =新的BitmapData(stage.width,stage.height);
jpgSource.draw(阶段);



VAR jpgEn codeR:JPGEn codeR =新JPGEn codeR(85);
VAR jpgStream:的ByteArray = jpgEn coder.en code(jpgSource);

VAR标题:的URLRequestHeader =新URLRequestHeader(内容型,应用程序/八位字节流);
VAR jpgURLRequest:的URLRequest =新的URLRequest(jpg_en coder_download.php名= sketch.jpg?);
jpgURLRequest.requestHeaders.push(头);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest_blank);


}
 

在PHP

 < PHP
如果(使用isset($ GLOBALS [HTTP_RAW_POST_DATA]))
{
//获取字节组
$ JPG = $ GLOBALS [HTTP_RAW_POST_DATA];

//添加页眉下载的对话框
标题(内容类型:图像/ JPEG');
标题(内容处置:附件;文件名=$ _ GET ['名称']);
回声$ JPG;
}
?>
 

我最终得到这个工作,我摆脱了PHP的

  snap_btn.addEventListener(MouseEvent.CLICK,快照);

快照功能(EVT:MouseEvent)方法:无效
{

进口com.adobe.images.JPGEn codeR;



VAR jpgSource:的BitmapData =新的BitmapData(stage.width,stage.height);
jpgSource.draw(阶段);
VAR jpgEn codeR:JPGEn codeR =新JPGEn codeR(80);
VAR imgByteData:的ByteArray = jpgEn coder.en code(jpgSource);
文件=新的FileReference();

file.save(imgByteDataHaven_Big_Dream_Map.jpg);




}
 

解决方案

我就改写埃文的答案。

使用的FileReference使用JPEGEn code或PNGEn code从adobe.corelib上的BitmapData后保存文件。请记住,旧版本的FlashPlayer的(小于10)!不会保存在驱动器文件

I'm working on a drag and drop Flash game, after you place all the movable pieces I want to have a button that allows a person to save a screen shot of the entire stage.

I searched different samples and cant get this code to work.

Here is the AS3

snap_btn.addEventListener(MouseEvent.CLICK, snapShot );

function snapShot( evt:MouseEvent ):void
{

import com.adobe.images.JPGEncoder;

var jpgSource:BitmapData = new BitmapData (stage.width, stage.height); 
jpgSource.draw(stage); 



var jpgEncoder:JPGEncoder = new JPGEncoder(85); 
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); 
var jpgURLRequest:URLRequest = new URLRequest("jpg_encoder_download.php?name=sketch.jpg"); 
jpgURLRequest.requestHeaders.push(header); 
jpgURLRequest.method = URLRequestMethod.POST; 
jpgURLRequest.data = jpgStream; 
navigateToURL(jpgURLRequest, "_blank");


}

The PHP

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
// get bytearray 
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"]; 

// add headers for download dialog-box 
header('Content-Type: image/jpeg'); 
header("Content-Disposition: attachment; filename=".$_GET['name']); 
echo $jpg; 
}
?>

I ended up getting this to work, I got rid of the php

snap_btn.addEventListener(MouseEvent.CLICK, snapShot );

function snapShot( evt:MouseEvent ):void
{

import com.adobe.images.JPGEncoder; 



var jpgSource:BitmapData = new BitmapData(stage.width, stage.height);
jpgSource.draw(stage);
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var imgByteData:ByteArray = jpgEncoder.encode(jpgSource);
file = new FileReference();

file.save(imgByteData, "Haven_Big_Dream_Map.jpg");




}

解决方案

I'll just rewrite answer of Evan.

Use FileReference to save file after using JPEGEncode or PNGEncode from adobe.corelib on BitmapData. Remember that older versions of FlashPlayer (<10) won't save files on drive!

这篇关于AS3舞台屏幕截图到硬盘驱动器保存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆