0

私はスターリングフレームワークを初めて使用し、現在その使用方法を学んでいます。

完全に機能し、画面に表示されるスターリング フレームワークを使用して、埋め込まれた PNG ファイルからテクスチャを作成しましたが、スプライト シート (テクスチャ アトラス) を機能させようとしています。

「エラー #1007: コンストラクター以外でインスタンス化を試みました。」

私が行ったすべての調査から、私が持っているコードは機能するはずです。

私の資産クラスからの該当するコードは次のとおりです。

public class Assets
{
    [Embed(source="assets/sky.png")]
    private static var SKY_CLASS:Class;
    public static var SKY:Texture;

    [embed(source="assets/generalsheet.png")]
    private static var GENERAL_SHEET_CLASS:Class;       
    [embed(source="assets/generalsheet.xml", mimeType="application/octet-stream")]
    private static var GENERAL_ATLAS_CLASS:Class;
    public static var GENERAL_SHEET:TextureAtlas;

    public static function init():void
    {
        SKY = Texture.fromBitmap(new SKY_CLASS());
        GENERAL_SHEET = new TextureAtlas(Texture.fromBitmap(new GENERAL_SHEET_CLASS()), XML(new GENERAL_ATLAS_CLASS())); // this is where Flash Builder tells me there is an error
    }
4

1 に答える 1

1

Embedタグを大文字で書く必要があります。変更するだけです。

[embed(source="assets/generalsheet.png")]
private static var GENERAL_SHEET_CLASS:Class;       
[embed(source="assets/generalsheet.xml", mimeType="application/octet-stream")]
private static var GENERAL_ATLAS_CLASS:Class;

に:

[Embed(source="assets/generalsheet.png")]
private static var GENERAL_SHEET_CLASS:Class;       
[Embed(source="assets/generalsheet.xml", mimeType="application/octet-stream")]
private static var GENERAL_ATLAS_CLASS:Class;

ちなみに、クラス名は通常、UpperCamelCaseで記述され、ALL_CAPITALIZEDは定数用に予約されています。変数名は通常、lowerCamelCaseまたはlowercase_separated_by_underscoreで記述されます。これは、ほとんどのActionScript3(およびJava)プログラマーが従う慣習であり、これに固執すると、コードが読みやすくなるため、次回は簡単にサポートできるはずです;)

だから私はお勧めします:

[Embed(source="assets/sky.png")]
private static var SkyClass:Class;

public static var sky:Texture;

[Embed(source="assets/generalsheet.png")]
private static var GeneralSheetClass:Class;

[Embed(source="assets/generalsheet.xml", mimeType="application/octet-stream")]
private static var GeneralAtlasClass:Class;

public static var general_sheet;

public static function init():void
{
    sky = Texture.fromBitmap(new SkyClass());

    general_sheet = new TextureAtlas(Texture.fromBitmap(new GeneralSheetClass()), XML(new GeneralAtlasClass()));
}
于 2012-07-24T06:45:48.097 に答える