我正在尝试使用Flash CS6为iOS开发应用程序。我使用装载机导入了图像。我现在希望能够创建加载器位图数据的重复实例并且一直在尝试:
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest("cats.jpg"));
my_loader.scaleX = 0.2;
my_loader.scaleY = 0.2;
addChild(my_loader);
var duplicationBitmap:Bitmap = new Bitmap(Bitmap(my_loader.content).bitmapData);
duplicationBitmap.x = 300;
duplicationBitmap.y = 300;
addChild(duplicationBitmap);
不幸的是,当我测试代码时,它不起作用。我得到了初始加载的图像,但没有重复,我也得到输出错误:
TypeError:错误#1009:无法访问空对象引用的属性或方法。 在Main()
非常感谢任何想法。
答案 0 :(得分:2)
Bitmap(my_loader.content)是一个DisplayObject,而不是Bitmap,它可以为您提供nullpointer错误。 要复制bitmapData,您应该使用BitmapData。clone()。
答案 1 :(得分:1)
当加载程序初始化时,您可以将加载器绘制到BitmapData
对象,然后只需使用它在加载程序完成时创建所需数量的Bitmap
对象。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.events.Event;
var loaderBitmapData:BitmapData;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitEventHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteEventHandler);
loader.load(new URLRequest("eXO-01.png"));
function loaderInitEventHandler(event:Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.INIT, loaderInitEventHandler);
loaderBitmapData = new BitmapData(event.target.width, event.target.height);
loaderBitmapData.draw(event.target.loader as Loader);
}
function loaderCompleteEventHandler(event:Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderCompleteEventHandler);
createBitmaps();
}
function createBitmaps():void
{
var image1:Bitmap = new Bitmap(loaderBitmapData);
image1.scaleX = image1.scaleY = 0.2;
var image2:Bitmap = new Bitmap(loaderBitmapData);
image2.scaleX = image2.scaleY = 0.4;
image2.x = image2.y = 100;
addChild(image1);
addChild(image2);
}