【问题标题】:Duplicating bitmapData from a loader从加载器复制 bitmapData
【发布时间】:2013-02-04 12:23:45
【问题描述】:

我正在尝试使用 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()

任何想法将不胜感激。

【问题讨论】:

    标签: ios actionscript-3 flash loader bitmapdata


    【解决方案1】:

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

    【讨论】:

    • 谢谢csomakk,请问怎么用?我尝试了几种方法,但我放弃了:1119:通过静态类型 flash.display:Loader 的引用访问可能未定义的属性 BitmapData。
    【解决方案2】:

    您可以在加载程序初始化时将加载程序绘制到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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多