AS3#1067将flash.utils.timer类型的值强制强制转换为不相关的类型函数

时间:2013-02-22 18:47:05

标签: actionscript-3 flash timer flashdevelop

我一直收到这个错误,我不知道如何修复它,它在另一个类中工作,所以它应该在这里工作,对吧? (我将它从那个类移到了这个类)唯一的区别是这个类扩展了'Game'而另一个类扩展了'MovieClip'

1067: Implicit coercion of a value of type flash.utils:Timer to an unrelated type Function.

public static var timeLeft;

public function GamePlay() {
    // Start timer
    var timeCounter:Timer = new Timer(1000, timeLeft)
    timeCounter.addEventListener(TimerEvent.TIMER, timeCounter);
    timeCounter.start();
}

// Handle time counter
public function timeCounter(e:TimerEvent):void {
    timeLeft--;
    trace(timeLeft);
}

2 个答案:

答案 0 :(得分:1)

您需要为Timer对象和侦听器函数指定不同的名称:

public static var timeLeft:int;

var timer:Timer = new Timer(1000, timeLeft)
timer.addEventListener(TimerEvent.TIMER, timeCounter);
timer.start();

public function timeCounter(e:TimerEvent):void {
    timeLeft--;
    trace(timeLeft);
}

我假设timeLeft设置在其他地方?

答案 1 :(得分:0)

您的功能和Timer都被称为timeCounter,因此它认为您正在尝试将Timer作为函数传递(因此错误)。你应该重命名两个中的一个,在这里我重命名了这个函数:

public static var timeLeft;

// Start timer
var timeCounter:Timer = new Timer(1000, timeLeft)
timeCounter.addEventListener(TimerEvent.TIMER, timeCountHandler);
timeCounter.start();

// Handle time counter
public function timeCountHandler(e:TimerEvent):void {
    timeLeft--;
    trace(timeLeft);
}