动作脚本3中的计时器

| 我有需要创建计时器的问题,但是我想将变量传递给它,该怎么做?在AS3中可以吗? 我这样尝试过:
            bonusPlayer1Timer = new Timer(5000);
            bonusPlayer1Timer.addEventListener(TimerEvent.TIMER, bonusChanges(player1));
            bonusPlayer1Timer.addEventListener(TimerEvent.TIMER_COMPLETE, bonusChangesRemove(player1));
            bonusPlayer1Timer.start();

function bonusChanges(event:TimerEvent, playerBonus:Player):void {
    switch (playerBonus.bonus) {
        case 0 :
            playerBonus.multipleShooting = false;
            playerBonus.bonus = -1;
            break;
...}}
但是我有错误:
1067: Implicit coercion of a value of type Player to an unrelated type flash.events:TimerEvent.
1136: Incorrect number of arguments.  Expected 2.
这个错误在粗体字中。 我可以这样使用吗?还是我必须为每个播放器创建两个相同的函数,因为不允许将任何不同的参数传递给timer函数? 谢谢,     
已邀请:
创建一个扩展Timer类的类,并为Player添加一个属性。
public class PlayerTimer extends Timer
{
    public var thePlayer:Player;

    public function PlayerTimer(delay:Number, repeatCount:int=0)
    {
        super(delay, repeatCount);
    }       
}
使用您的示例,代码将如下所示:
bonusPlayer1Timer = new PlayerTimer(5000);
bonusPlayer1Timer.thePlayer = new Player();
bonusPlayer1Timer.addEventListener(TimerEvent.TIMER, bonusChanges);
bonusPlayer1Timer.addEventListener(TimerEvent.TIMER_COMPLETE, bonusChangesRemove);
bonusPlayer1Timer.start();

function bonusChanges(event:TimerEvent):void {
    var playerBonus:Player = PlayerTimer(event.target).thePlayer; 
    switch (playerBonus.bonus) {
        case 0 :
            playerBonus.multipleShooting = false;
            playerBonus.bonus = -1;
            break;
...}}
    
您绝不能将一个以上的参数传递给EventListener触发的函数。您需要找到其他传递信息的方式,例如Nathan Smith提供的解决方案。     
您也可以这样操作:
var x = setTimeout(yourfunction(/*arguments you need*/),1000);
function yourfunction(/*var*/){
    //your code
}
    
正义类型 var bonusPlayer1Timer = new Timer(5000);     

要回复问题请先登录注册