我有一个用于在舞台上显示文本的类,带有一些数字效果。它工作得很好,但当我像这样链接它
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。我之所以不在onAdd中调用waveOne,是因为它不会发生太快 - 我的课程每隔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);
}
}
}
}
设置为与具有文本字段的动画片段链接。
感谢您的帮助。
答案 0 :(得分:1)
y = 0 - waitingFor * 60;
上次y
的{{1}}可能是一个很大的负数?您是否尝试追踪Mesager
?