我有以下随机字母循环的脚本。我想在某个点击或框架标签上调用此函数,但是当我用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()
答案 0 :(得分:2)
只需将参数设为可选:
function eFrame(e:Event = null):void {
您可以执行此操作,因为您不在监听器功能中使用e
。
另一种方法是为函数调用提供TweenMax
一些参数。
tl.append(TweenMax.from(home.home_title.field, 1, {onStart:eFrame, onStartParams: [null]}));