2

如何在 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 为空。

编辑:

所以我发现嵌入的数据是空的,但我不知道为什么。我在嵌入中做错了什么?

4

3 回答 3

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;
于 2012-05-26T18:40:15.627 回答
3

您不需要实例化为 BitmapData 并绘制 - 您可以简单地:

[Embed(source="Assets/helicopter1.png")]
private var AssetClass:Class;

var bitmap:Bitmap = new AssetClass();
于 2012-05-26T18:39:00.747 回答
0

在某些编辑器(至少我的 Intellij 版本)中,Embed 标签区分大小写。我在使用 [EMBED] 时遇到了与您完全相同的错误,但当我切换到 [Embed] 时效果很好

于 2017-03-28T15:23:52.723 回答