【问题标题】:How do you load a bitmap file into a BitmapData object?如何将位图文件加载到 BitmapData 对象中?
【发布时间】:2010-10-16 16:10:44
【问题描述】:

在 Flash 中,BitmapData 对象可用于将位图存储在 RAM 中,稍后您可以使用 beginBitmapFill() 方法将它们绘制到 MovieClip。

如何将外部位图文件 (.jpg) 加载到 BitmapData 对象中?

即使是 AS3 代码也会有所帮助。

【问题讨论】:

  • 我真的不明白你为什么选择自己的答案而不是 Cotton 的答案。
  • 因为我想要一个 AS2 解决方案。棉花的是 AS3。

标签: flash actionscript bitmap drawing bitmapdata


【解决方案1】:

用于加载 PNG 并“获取”其 bitmapData 的 AS3 代码

var bitmapData:BitmapData;

var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loader.load(new URLRequest("../lib/img.png"));

function onComplete (event:Event):void
{
    bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
}

【讨论】:

  • 只是一个注释。您不能为此使用 URLLoader
  • 另一个说明。 Loader 将一些信息添加到位图,因此尝试直接从 event.target.content 更改一些属性,如 name 。但是作为 OP 创建一个新的位图是好的。
【解决方案2】:

参考棉花的第一篇文章。

实际上每个图像都是一个位图,所以你需要做的就是

bitmapData = event.target.content.bitmapData  

而不是

bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;

【讨论】:

  • 不,LoaderInfo.content 是一个 DisplayObject。所有位图都是 DisplayObject,但并非所有 DisplayObject 都是位图,因此是强制转换。通过删除强制转换,您可以解决 ActionScript 语言的类型安全特性。
【解决方案3】:

取自棉花和意志,这将在加载后显示位图:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bitmapData:BitmapData;
var bmVis:Bitmap;

var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loader.load(new URLRequest("put url here"));

function onComplete (event:Event):void
{
    trace("loaded!");
    bitmapData = event.target.content.bitmapData;
    bmVis = new Bitmap(bitmapData);
    this.addChild(bmVis);
}

【讨论】:

    【解决方案4】:

    您必须将外部文件 (.jpg) 加载到 MovieClip 并等待它加载。

    然后将包含外部文件的 MovieClip 的快照放入您的 BitmapData 对象中。

    myBitmap = new BitmapData(myMC._width, myMC._height,true,0x00FFFFFF)
    
    myBitmap.draw( myMC)
    

    见Introducing the Image API in Flash 8.

    【讨论】:

      【解决方案5】:

      GUI阶段:
      将图像加载到库中(文件 -> 导入 -> 库)。
      在库浏览器中,右键单击并点击“属性”,注意它是 X x Y 像素。
      打开“高级”标签。
      选择“为动作脚本导出”。导出为 myImg

      Actionscript 阶段:

      import flash.display.BitmapData;
      import flash.display.Bitmap; //needed?
      ..........
      var myPic:BitmapData = new myImg(X,Y);
      

      【讨论】:

        猜你喜欢
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 2011-05-25
        • 1970-01-01
        • 2012-06-15
        • 2016-11-21
        • 2012-02-02
        相关资源
        最近更新 更多