Starling,Atlas纹理“纹理不能为空”

时间:2012-11-08 23:33:16

标签: xml actionscript-3 textures starling-framework

我开发了一个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。

2 个答案:

答案 0 :(得分:4)

我认为您没有正确嵌入 Atlas XML文件,因此无法正确读取 TextureAtlas 的信息。

尝试以下两个补充:

  1. Embed元标记中添加 mimeType 属性:

    [Embed(source =“Atlas_bg / AtlasBackground.xml”,mimeType =“application / octet-stream”)] public var AtlasXml:Class;

  2. 在XML文件的开头添加以下行:

    &lt;?xml version =“1.0”encoding =“UTF-8”?&gt;

  3. 在此之后,清理您的项目几次,以使用不正确的嵌入式文件摆脱以前的版本并再次构建项目。现在一切都应该正常工作。

答案 1 :(得分:0)

你确定ArgumentError指的是哪里?我注意到您在第二个参数中为Number函数使用了int而不是addChildAt()

尝试将其交换到此处,看看是否可以解决问题:

addChild(objsImage);