我开发了一个Flex / Starling游戏,我希望使用Atlas Texture优化所有精灵调用。 我的问题是我使用一个清晰简单的代码,基本的资源和我不能运行,我得到一个参数错误,纹理不能为空。 我知道.getTexture方法什么都没找到,但是我没看到如何解决这个问题,我的代码:
[Embed(source = "Atlas_bg/AtlasBackground.xml")]
public var AtlasXml:Class
[Embed(source = "Atlas_bg/AtlasBackground.png")]
public var AtlasPng:Class
// create atlas
var texture:Texture = Texture.fromBitmap(new AtlasPng());
var xml:XML = XML(new AtlasXml());
var atlas:TextureAtlas = new TextureAtlas(texture, xml);
// display a sub-texture
var objsTexture:Texture = atlas.getTexture("star_0");// ne trouve rien
var objsImage:Image = new Image(objsTexture);
addChildAt(objsImage, 0.6);
objsImage.x = 200;
objsImage.y = 200;
XML内容:
<TextureAtlas imagePath="AtlasBackground.png">
<SubTexture name="star_0" x="2" y="2" width="20" height="20"/>
<SubTexture name="star_1" x="2" y="24" width="20" height="20"/>
</TextureAtlas>
THX。
答案 0 :(得分:4)
我认为您没有正确嵌入 Atlas XML文件,因此无法正确读取 TextureAtlas 的信息。
尝试以下两个补充:
在Embed
元标记中添加 mimeType 属性:
[Embed(source =“Atlas_bg / AtlasBackground.xml”,mimeType =“application / octet-stream”)] public var AtlasXml:Class;
在XML文件的开头添加以下行:
&lt;?xml version =“1.0”encoding =“UTF-8”?&gt;
在此之后,清理您的项目几次,以使用不正确的嵌入式文件摆脱以前的版本并再次构建项目。现在一切都应该正常工作。
答案 1 :(得分:0)
你确定ArgumentError
指的是哪里?我注意到您在第二个参数中为Number
函数使用了int
而不是addChildAt()
。
尝试将其交换到此处,看看是否可以解决问题:
addChild(objsImage);