指定要调用的函数

时间:2011-05-11 13:12:59

标签: actionscript-3

我有以下随机字母循环的脚本。我想在某个点击或框架标签上调用此函数,但是当我用tweenmax调用它时,我得到一个运行时错误。任何人都可以向我解释如何在某些事件中调用此函数。我知道这绝对不是最佳做法,但必须尝试某处,这就是我所做的:

var targetWord:String = 'home';
var wordSoFar:String = '';
var possibleCharacters:Array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
var ticksBetweenLetters:int = 15;
var currentTick:int = 0;


addEventListener(Event.ENTER_FRAME, eFrame);


function eFrame(e:Event):void{
    if(currentTick >= ticksBetweenLetters){
        wordSoFar = targetWord.substr(0, wordSoFar.length + 1);
        currentTick = 0;
        ticksBetweenLetters = int(Math.random() * 15);
        if(wordSoFar == targetWord){
            removeEventListener(Event.ENTER_FRAME, eFrame);
            home.home_title.field.text = targetWord;
            return;
        }
    }

    home.home_title.field.text = wordSoFar + possibleCharacters[int(Math.random() * possibleCharacters.length)];
    currentTick++;    
}

我希望在我把它放在这里时开始活动:

tl.append(TweenMax.from(home.home_title.field, 1, {onStart:eFrame}));

但我明白了:

ArgumentError: Error #1063: Argument count mismatch on sncc_fla::website_1/eFrame(). Expected 1, got 0.
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at com.greensock::TweenMax/renderTime()
    at com.greensock::TimelineMax/renderTime()
    at com.greensock.core::TweenCore/setTotalTime()
    at com.greensock::TimelineMax/set currentTime()
    at com.greensock::TweenLite/renderTime()
    at com.greensock.core::SimpleTimeline/renderTime()
    at com.greensock::TweenLite$/updateAll()

1 个答案:

答案 0 :(得分:2)

只需将参数设为可选:

function eFrame(e:Event = null):void {

您可以执行此操作,因为您不在监听器功能中使用e

另一种方法是为函数调用提供TweenMax一些参数。

tl.append(TweenMax.from(home.home_title.field, 1, {onStart:eFrame, onStartParams: [null]}));