1067:将void类型的值隐式强制转换为不相关的类型函数

时间:2014-05-12 08:38:51

标签: actionscript-3 class flex actionscript flex4.5

所以我的动作脚本有一些noob错误,我需要一些帮助才能解决它。代码实现Timer更改将在给定的持续时间内更改文本。它收到了持续时间和需要突出显示/更改的RichText项目,并在给定时间内更改了它的颜色。这是它的基本结构。

package
{
    import flash.events.Event;
    import flash.events.TimerEvent;
import flash.utils.Timer;

import spark.components.RichText;

    public class TextChanger
    {


        public function changeColorForDuration(Duration:int, Texter:RichText){

            var highlightTextForDuration:Timer = new Timer(1000, Duration);

    highlightTextForDuration.addEventListener(TimerEvent.TIMER_COMPLETE, textDehighlight(Texter));

            textHighlight(Texter);
            highlightTextForDuration.start();   

        }

        private function textHighlight(specificText:RichText):void{
            var textField:RichText = specificText;
            textField.setStyle("color", "#ED1D24");
        }
        private function textDehighlight(textToChange:RichText):void{
            var textField:RichText = textToChange;
            textField.setStyle("color", "#00000");
        }
      }
    }

非常感谢您提供的任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

当你致电addEventListener时,你需要传入一个函数,而不是一个函数调用:

highlightTextForDuration.addEventListener(TimerEvent.TIMER_COMPLETE, textDehighlight);

你的听众功能需要看起来更像这样:

private function textDehighlight(e:TimerEvent):void{
    var textField:RichText = textToChange;
    textField.setStyle("color", "#00000");
}

当然,这需要您为textToChange添加一个类变量。如果这不起作用,您可以使用匿名侦听器函数:

highlightTextForDuration.addEventListener(TimerEvent.TIMER_COMPLETE, function(e:TimerEvent):void {
  var textField:RichText = Texter;
  textField.setStyle("color", "#00000");
});