2

Flex/Starling ゲームを開発していますが、Atlas Texture を使用してすべてのスプライト呼び出しを最適化したいと考えています。私の問題は、基本的なリソースを使用して明確でシンプルなコードを使用していて、実行できないことです。引数エラーが発生し、テクスチャを null にすることはできません。.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>

どうも。

4

2 に答える 2

4

Atlas XML ファイルを正しく埋め込んでいないため、 TextureAtlasの情報を正しく読み取れないと思います。

次の 2 つの追加を試してください。

  1. メタタグにmimeType属性を追加します。Embed

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

  2. XML ファイルの先頭に次の行を追加します。

    <?xml version="1.0" encoding="UTF-8"?>

この後、プロジェクトを数回クリーンアップして、誤った埋め込みファイルを含む以前のビルドを取り除き、プロジェクトを再度ビルドします。すべてが機能するはずです。

于 2012-11-09T14:58:43.363 に答える
0

ArgumentErrorが指している場所は確かですか?2 番目のパラメーターの関数に、Number代わりにを使用していることに気付きました。intaddChildAt()

これに交換してみて、問題が解決するかどうかを確認してください。

addChild(objsImage);
于 2012-11-09T02:00:48.067 に答える