아래 코드는 간단한 추가 및 저장 프로그램입니다. addButton을 눌러 캔바스에 내용을 추가하고 exportButton을 눌러 현재 상태의 캔바스 이미지를 바탕 화면에 저장합니다. 이 코드는 캔버스에 그려진 원 객체를 캔버스에 추가 할 때 잘 작동합니다. .png를 캔버스에로드하려고하면 문제가 발생합니다. 로드 된 내용이 캔버스에 추가되면 exportButton은 모두 작동하지 않으며 더 이상 응답하지 않습니다. 로드 된 내용으로 인해 코드가 손상되는 원인은 무엇입니까? 왜 Loader 객체가 비트 맵 데이터 draw();를 죽입니까?
**이 POST의 HASS
3 월 30 일 아래와 2012 년 편집 된 것은 WORKING 코드 *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");
}
}
}
디버거로 확인 했습니까? 어떤 충돌이 있습니까? – taskinoor
아마도로드 된 컨텐츠가 내보내기 버튼 위에 추가됩니다. 또한 디버거를 사용하여 응용 프로그램에 오류가 있는지 확인해야합니다. – Ohas