2

我使用 Starling 框架在 adobe animate 中创建了饥饿英雄游戏(重新创建)。从以下地址下载:

( http://www.test.farsvila.ir/animate_starling_Error.rar )

package {
    import flash.display3D.textures.Texture;
    import flash.utils.Dictionary;
    import flash.display.Bitmap;

    import starling.textures.Texture;
    import starling.display.Sprite;
    import starling.events.Event;
    import starling.display.Image;
    import starling.display.Button;
    import starling.core.Starling;
    import starling.events.Event;
    import screens.Welcome;

    public class Assets {

        [Embed(source = "media/graphics/bgWelcome.jpg")]
        public static const BgWelcome: Class;

        [Embed(source = "media/graphics/welcome_hero.png")]
        public static const WelcomeHero: Class;

        [Embed(source = "media/graphics/welcome_title.png")]
        public static const WelcomeTitle: Class;

        [Embed(source = "media/graphics/welcome_playButton.png")]
        public static const WelcomePlayBtn: Class;

        [Embed(source = "media/graphics/welcome_aboutButton.png")]
        public static const WelcomeAboutBtn: Class;

        private static var gameTextures: Dictionary = new Dictionary();

        public static function getTexture(name: String): Texture {
            if (gameTextures[name] == undefined) {
                var bitmap: Bitmap = new Assets[name]();
                gameTextures[name] = Texture.fromBitmap(bitmap);
            }
            return gameTextures[name];
        }
    }

}

它犯了一个错误->通过具有静态类型Class的引用从Bitmap调用可能未定义的方法。

4

1 回答 1

2

乍一看,一切正常!根据DOC fromBitmap是一个公共静态成员starling.textures.Texture

但问题是因为import flash.display3D.textures.Texture 你的帖子中的代码块超出了代码块,让我被绞死了几分钟!

所以在这种情况下,我们有相同的类名,两个纹理。编译器也会混淆(不明确的参考错误)。

试试看

已编辑

public static function getTexture(name: String): starling.textures.Texture {
    if (gameTextures[name] == undefined) {
        var bitmap: Bitmap = new Assets[name]();
        gameTextures[name] = starling.textures.Texture.fromBitmap(bitmap);
    }
    return gameTextures[name];
}

为了让编译器清楚,哪个 Texture 是你的意思

建议

我猜你真的不需要import flash.display3D.textures.Texture; ,所以从你的默认代码中删除它(问题解决而不更改Texturestarling.textures.Texture

于 2016-12-11T11:34:10.777 回答