尝试使用Loader将图像加载到sprite时,AS3调试器停止响应

时间:2015-12-13 21:15:15

标签: actionscript-3 flash flex flashdevelop

我试图在AS3中创建一个简单的菜单。有一个名为startButton的精灵,按下后会调用function startGame,这就是它!但是,不那么容易。我使用的是flashdevelop IDE,因此我尝试拨打loader来获取.png spite的{​​{1}}图片文件。但是,它不起作用。没有错误消息,调试器只是没有响应。有帮助吗?这是两个文件的代码

主要代码:

startButton

菜单图片代码:

package {

    //Other Files
    import Menu;

    import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.ui.Mouse;

    public class Main extends Sprite {

        //Game values
        public static var gameWidth:int = 750;
        public static var gameHeight:int = 750;

        public function Main() {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

            addChild(Menu.startButton);
            Menu.startButton.addEventListener(MouseEvent.CLICK, startGame);
            stage.addEventListener(Event.ENTER_FRAME, update);
        }

        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
        }

        //Function starts game
        public function startGame(evt:MouseEvent):void {
            removeChild(Menu.startButton);
        }

        //Updates every 60 seconds
        public function update():void {
            trace("Updated");
        }

    }

}

顺便说一句,我等待加载程序在使用之前成功加载图像,以防图像需要更多时间并且会出错。

1 个答案:

答案 0 :(得分:2)

问题是你滥用静电。所有静态方法/属性都在类本身之前初始化。因此,静态可以接收值,但它们不能运行任何代码。所有类都准备就绪后必须运行代码,而静态初始化则不然。在你的情况下,startButton和loader被正确创建,但下一行永远不会运行'loader.load'。

不要滥用静态,你显然是在尝试使用静态来使代码编写和生活变得更容易,但最后因为你误用了它,你总会遇到更多的问题。