0

我正在尝试使用 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:无法访问空对象引用的属性或方法。在主要()

任何想法将不胜感激。

4

2 回答 2

2

Bitmap(my_loader.content) 是一个显示对象,而不是位图,它会给你空指针错误。要复制 bitmapData,您应该使用 BitmapData。克隆()。

于 2013-02-04T12:31:20.523 回答
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);
}
于 2013-02-04T13:46:49.863 回答