在计时器完成时将玩家重定向到游戏屏幕

时间:2012-12-04 17:11:42

标签: actionscript-3 flash actionscript

好的,我是Actionscript 3的新手

我希望我的计时器指示正在玩游戏的人在计时器完成时(00:00)进入“游戏结束”屏幕。目前我收到一条错误,上面写着“1067:将类型类的值隐式强制转换为不相关的类型flash.display:DisplayObject。”

有什么想法吗?

package {

    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class SecondCounter extends MovieClip {

        private var myTimer:Timer=new Timer(1000,0);
        private var secs:Number=10;
        private var mins:Number=0;
        private var sec_t:String;
        private var min_t:String;
        var screen7:EndScreen;

        public function SecondCounter() {

            myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
            myTimer.start();
        }

        private function timerHandler(evt:TimerEvent):void {
            if (secs==0) {
                if (mins==0) {
                    addChild(EndScreen);
                } else {
                    mins--;
                    secs=59;
                }
            } else {
                secs--;
            }
            if(secs<10){
                sec_t = "0"+String(secs) 
            } else {
                sec_t = String(secs);
            }
            if(mins<10){
                min_t = "0"+String(mins) +":"
            } else {
                min_t = String(mins)+":";
            }
            secondField.text = min_t + sec_t;
        }
    }    
}

1 个答案:

答案 0 :(得分:2)

问题是你试图将类本身添加到屏幕而不是类的实例。

 var screen7:EndScreen;
 // ....
 addChild(EndScreen);

EndScreen是这个类。这是如何创建实际EndScreen对象的蓝图。 Screen7是EndScreen类的一个实例(EndScreen class = blueprint,screen7 instance = actual built house)。

但是你实际上没有实现screen7,所以这样做:

var screen7:EndScreen = new EndScreen();

现在您可以将该实例添加到显示中:

addChild(screen7);