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