2012-11-08 72 views
2

我開發了一個Flex/Starling遊戲,我希望使用Atlas Texture來優化所有的sprite調用。 我的問題是,我使用一個清晰​​和簡單的代碼,與基本資源,我不能運行,我得到一個參數錯誤,紋理不能爲空。 據我所知,.getTexture方法發現什麼,但我沒有看到如何解決這個問題,我的代碼:Starling,Atlas紋理「紋理不能爲空」

[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

您確定這是ArgumentError指向的地方嗎?我注意到你正在使用Number而不是int作爲第二個參數中的addChildAt()函數。

嘗試交換到這一點,看看是否能解決的事情:

addChild(objsImage); 
+0

是的,這很奇怪(可能是一個錯字),但它不是錯誤的來源。 addChildAt需要一個int參數,以便傳遞給它的數字被截斷爲其整數部分(在本例中爲0),它應該可以工作。 – danii

4

我想你是不是嵌入阿特拉斯XML文件正確,因此TextureAtlas不能正確的信息讀。

試試下面這兩個加法:

  1. 添加mime類型屬性,在Embed元標記:

    [嵌入(來源= 「Atlas_bg/AtlasBackground.xml」,mime類型=「應用/ octet-stream「)] public var AtlasXml:Class;

  2. 在XML文件的開頭添加以下行:

    < XML版本= 「1.0」 編碼= 「UTF-8」? >

在此之後,清理項目幾次擺脫以前的作品有不正確的嵌入式文件並重新生成項目。一切都應該現在工作。

+0

Thx,我會嘗試你的提示,並且我會盡快告訴你是否解決了問題! – Georgio