【问题标题】:Embed bitmap in ActionScript3在 ActionScript3 中嵌入位图
【发布时间】:2012-06-01 21:13:06
【问题描述】:

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

编辑:

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

【问题讨论】:

    标签: actionscript-3 actionscript bitmap embed


    【解决方案1】:

    您无需实例化为 BitmapData 并进行绘制 - 您可以简单地:

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

    【讨论】:

    • 我上面说了,我做不到new AssetClass();
    【解决方案2】:

    如果您没有收到错误转码,您的嵌入似乎是正确的。您应该可以直接从位图中获取 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;
    

    【讨论】:

    • 如果我这样做new Picture() 我会得到TypeError: Error #1007: Instantiation attempted on a non-constructor
    • 你还在按照例子做 EMBED 而不是 Embed 吗?
    • 这似乎是其他所有人的正确答案,所以我会接受
    • 我得到了它与 BM = new BMClass() as Bitmap; 的合作。我不知道为什么它以前不起作用,但现在它起作用了。感谢您的帮助。
    • 太好了,很高兴你被排序:)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 2017-12-23
      • 2017-08-01
      相关资源
      最近更新 更多