У моего класса есть некоторые проблемы со временем - PullRequest
1 голос
/ 22 сентября 2011

У меня есть класс, который я использую для отображения текста на сцене, с некоторыми числовыми эффектами. Это работает довольно хорошо, но когда я цепью это так

    public function onAdd(e:Event) {
        //stuff
        addChild(new messager("Welcome."));
        addChild(new messager("WASD to move, mouse to shoot."));
        addChild(new messager("Kill zombies for XP and collect ammo boxes.",waveOne));
    }
    public function waveOne(){
        addChild(new messager("Good luck and have fun.",newWave));
    }

Текст (удачи и веселья) не отображается, но вызывается newWave. Причина, по которой я не вызываю waveOne в onAdd, заключается в том, что это не происходит слишком быстро - мой класс просто выбрасывает текст на пользователя один раз каждые 50 кадров (что предназначено для последующего использования, когда вы убиваете врагов и текст требует наверстать упущенное).

Вот мой класс (со снятыми эффектами):

package  {

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

public class Messager extends MovieClip{
    var actualText:String;
    var callback:Function;
    var upTo:int = 0;
    static var waitingFor:int = 0;
    public function Messager(text:String,callback:Function=null) {
        this.callback = callback;
        actualText = text;
        x = 320 - actualText.length * 6.5;
        y = 0 - waitingFor * 60;
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
        waitingFor++;
    }
    public function onEnterFrame(e:Event) {
        y+= 1;
        if(y > 60){
            waitingFor--;
        }
        if(y > 200){
            alpha -= 0.03;
            if(alpha <= 0){
                if(callback != null){
                    callback();
                }
                removeEventListener(Event.ENTER_FRAME, onEntFrm);
                this.parent.removeChild(this);
            }
        }
    }
}

Он установлен для связи с мувиклипом с текстовым полем.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 22 сентября 2011

y = 0 - waitingFor * 60; Может быть y из последних Mesager - это большое отрицательное число?Вы пытались отследить waitingFor?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...