я пытаюсь сделать следующее:
Я хочу загрузить внешнее изображение (dest) и отобразить его на сцене, и я хочу загрузить другое изображение (src), которое не будет видно. Когда я удерживаю левую кнопку мыши на изображении, которое появляется на сцене, запускается функция, которая запускает копирование изображения src в dest. На самом деле я хочу воспроизвести эффект царапины на изображении, которое скрывает другое изображение.
вот мой код [функция copypixels запускается по событию mouse_move в целях отладки]
package
{
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.events.Event;
import flash.events.MouseEvent;</p>
<pre><code>[SWF(width='400', height='300', backgroundColor='#ffffff', frameRate='24')]
public class CopyDemo extends Sprite
{
private const BLADE_WIDTH:Number = 5;
private const BLADE_HEIGHT:Number = 5;
private var loadedSurpriseAssetContainer:Sprite;
private var loadedSurpriseBitmapData:BitmapData;
private var loadedFrontAssetContainer:Sprite;
private var loadedFrontBitmapData:BitmapData;
private var blade:Sprite;
private var xmouse:Number;
private var ymouse:Number;
public function CopyDemo()
{
loadSurpriseImage("pic1.jpg");
}
//-------- loadFrontImage ------------
private function loadFrontImage(url:String):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onFrontLoaderComplete);
loader.load(new URLRequest(url));
}
//------- loadSurpriseImage -------------
private function loadSurpriseImage(url:String):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSurpriseLoaderComplete);
loader.load(new URLRequest(url));
}
private function onFrontLoaderComplete(event:Event):void
{
loadedFrontAssetContainer = new Sprite();
loadedFrontAssetContainer.addChild(LoaderInfo(event.target).content);
loadedFrontBitmapData = new BitmapData(loadedFrontAssetContainer.width, loadedFrontAssetContainer.height, true, 0x00000000);
loadedFrontBitmapData.draw(loadedFrontAssetContainer);
addChild(loadedFrontAssetContainer);
loadedFrontAssetContainer.addEventListener(MouseEvent.MOUSE_MOVE, startcopy);
}
private function onSurpriseLoaderComplete(event:Event):void
{
loadedSurpriseAssetContainer = new Sprite();
loadedSurpriseAssetContainer.addChild(LoaderInfo(event.target).content);
loadedSurpriseBitmapData = new BitmapData(loadedSurpriseAssetContainer.width,
loadedSurpriseAssetContainer.height,
true,
0x00000000);
loadedSurpriseBitmapData.draw(loadedSurpriseAssetContainer);
loadedSurpriseAssetContainer.addEventListener(MouseEvent.MOUSE_MOVE, saveCoords);
loadFrontImage("pic2.jpg");
}
private function saveCoords(event:MouseEvent):void
{
//
}
private function startcopy(event:MouseEvent):void
{
xmouse = mouseX;
ymouse = mouseY;
trace("x=" + xmouse + ", y=" + ymouse);
loadedFrontBitmapData.copyPixels(loadedSurpriseBitmapData,
new Rectangle(0,0,10,10),
new Point(0,0));
}
}
}
Несмотря на то, что два изображения загружены в память, а первое показано на сцене, когда события mouse_move запускают соответствующие обработчики, копия не работает. Есть идеи?