如何在Actionscript 3中嵌入位图并获取BitmapData?
public class MyGame extends Sprite {
[EMBED(source="Assets/helicopter1.png")] private static var BMClass:Class;
public function MyGame() {
var BM:Bitmap = new BMClass();
var BMData:BitmapData = new BitmapData(BM.width, BM.height);
BMData.draw(BM)
}
}
我已经尝试了一切。如果我尝试实例化嵌入类(new BMClass();
),我会收到此错误:
TypeError: Error #1007: Instantiation attempted on a non-constructor.
。
如果我使用
[EMBED(source="Assets/helicopter1.png")] private static var BMClass:BitmapData;
或类似的BitmapData为空。
修改
所以我发现嵌入数据是空的,但我无法弄清楚原因。我在嵌入中做错了什么?
答案 0 :(得分:17)
如果您没有收到错误转码,看起来您正在正确嵌入。您应该能够直接从位图获取bitmapData:
[Embed(source="picture.jpg")]
private var Picture:Class;
// create a bitmap of the embedded
var pic:Bitmap = new Picture();
// add to display list
addChild(pic);
// if you need to get the bitmapData for something else
var bitmapData:BitmapData = pic.bitmapData;
答案 1 :(得分:3)
您不需要实例化为BitmapData并绘制 - 您可以简单地:
[Embed(source="Assets/helicopter1.png")]
private var AssetClass:Class;
var bitmap:Bitmap = new AssetClass();
答案 2 :(得分:0)
在某些编辑器中(至少我的Intellij版本),Embed标签区分大小写。我在使用[EMBED]时遇到了完全相同的错误但是当我切换到[嵌入]
时效果很好