在 ActionScript3 中嵌入位图
Posted
技术标签:
【中文标题】在 ActionScript3 中嵌入位图【英文标题】:Embed bitmap in 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 为空。
编辑:
所以我发现嵌入的数据为空,但我不知道为什么。我在嵌入中做错了什么?
【问题讨论】:
【参考方案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] 时效果很好
【讨论】:
以上是关于在 ActionScript3 中嵌入位图的主要内容,如果未能解决你的问题,请参考以下文章
Actionscript3 到 JavaScript 的通信:最佳实践
如何以正确的方式在 Actionscript 3 / Flex 3 中嵌入图像?
ActionScript 3:在 Flash embed 中失去焦点时保持 textarea UIscrollbar 位置