【发布时间】:2012-03-27 05:33:08
【问题描述】:
下面的代码是一个简单的添加和保存程序。您按 addButton 将内容添加到画布,然后按 exportButton 将当前状态下的画布图像保存到桌面。当我将圆形对象添加到画布上时,此代码可以正常工作。问题出在我尝试将 .png 加载到画布中时。将加载的内容添加到画布后,exportButton 将停止一起工作并且不再响应。是什么导致加载的内容破坏代码?
**此帖子已于 2012 年 3 月 30 日编辑,下面列出的是工作代码*
public class Application extends MovieClip
{
public var canvas:MovieClip = new MovieClip();
public var addBtn:MovieClip = new MovieClip();
public var exportBtn:MovieClip = new MovieClip();
public var _content:BitmapData;
public function Application()
{
canvas.graphics.beginFill(0x333333);
canvas.graphics.drawRect(0,0,450,450);
canvas.graphics.endFill();
addChild(canvas);
addBtn.graphics.beginFill(0x999999);
addBtn.graphics.drawRect(0,0,50,50);
addBtn.graphics.endFill();
exportBtn.graphics.beginFill(0x999999);
exportBtn.graphics.drawRect(0,0,50,50);
exportBtn.graphics.endFill();
canvas.x = stage.stageWidth / 2 - canvas.width;
addBtn.x = exportBtn.x = canvas.x +(canvas.width +25);
exportBtn.y = addBtn.height + 25;
addBtn.addEventListener(MouseEvent.CLICK, addClick);
exportBtn.addEventListener(MouseEvent.CLICK, exportClick);
addChild(canvas);
addChild(addBtn);
addChild(exportBtn);
}
private function addClick(event:MouseEvent):void
{
var loader:Loader = new Loader();
loader.load(new URLRequest("alphabet/a.png"));
loader.x = Math.random() * canvas.width;
loader.y = Math.random() * canvas.height;
canvas.addChild(loader);
}
private function exportClick(event:MouseEvent):void
{
_content = new BitmapData(canvas.width,canvas.height);
_content.draw(canvas);
saveBitmap();
}
private function saveBitmap():void
{
var encodedContent:ByteArray = PNGEncoder.encode(_content);
var fileWindow:FileReference = new FileReference();
fileWindow.save(encodedContent, "Image_randomly.png");
}
}
}
【问题讨论】:
-
你用调试器检查过吗?有没有崩溃?
-
可能加载的内容被添加到导出按钮的顶部。您还应该使用调试器检查应用程序是否抛出错误。
标签: actionscript-3 loader bitmapdata