0

我是新來的八哥框架,目前正在學習如何使用它。AS3椋鳥框架紋理圖集類型錯誤#1007

我從與八哥框架,完美,顯示工作在屏幕上嵌入PNG文件創建紋理,但我試圖讓一個spritesheet(紋理圖集)工作,這是給我這個:

」錯誤#1007:嘗試在非構造函數上實例化。「

從所有的研究中,我已經完成了我應該工作的代碼。

以下是我的Assets類中的適用代碼。

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 
    } 

回答

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; 

在一個側面說明,類名通常寫在UpperCamelCaseALL_CAPITALIZED i預留給常量。變量名通常寫在lowerCamelCaselowercase_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())); 
} 
+0

謝謝!這是一個noob錯誤。在Flash Builder中找到真的很難,大寫的Embed和小寫都是相同的顏色,並且不會引發任何編譯時錯誤。再次感謝,我開始感到沮喪。 – Brucef 2012-07-24 13:21:14