從您引用的代碼中,計時器構造函數未指定repeatCount
,表示它應該無限重複。對於要調用的timerDone()
處理程序,您必須指定重複計數。
另外,請注意,不建議低於20毫秒的延遲。
Timer構造參數:Timer(delay:Number, repeatCount:int = 0)
delay:Number
- 計時器事件,以毫秒爲單位之間的延遲。建議不要使用延遲時間低於20毫秒的 。定時器頻率 限制爲每秒60幀,這意味着延遲時間低於16.60毫秒會導致運行時問題。
repeatCount:int
(默認值= 0) - 指定重複次數。 如果爲零,定時器將無限期重複,最長可達24.86天 (int.MAX_VALUE + 1
)。如果非零,計時器將運行指定的編號 次,然後停止。
定時器不建議用於動畫內容。相反,使用Event.ENTER_FRAME
來處理基於幀的動畫。
一種方法是使用定時器觸發狀態變化到您的遊戲模式:
/** timer */
var timer:Timer;
/** whether enemies are advancing */
var advance:Boolean = false;
// start timer at 5-seconds intervals
timer = new Timer(5000);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
// animation controlled by Event.ENTER_FRAME
addEventListener(Event.ENTER_FRAME, frameHandler);
在你的計時器處理,你可以調整取決於你的遊戲狀態的計時器延遲。
/** timer handler */
function timerHandler(event:TimerEvent):void
{
// stop the current timer
timer.stop();
// depending on the current enemy state
switch (advance)
{
// if true, stop advancing and wait 5-seconds
case true:
trace("Stop advancing, wait 5-seconds");
timer.delay = 5000;
break;
// if false, advance for 2-seconds
case false:
trace("Advance for next 2-seconds");
timer.delay = 2000;
break;
}
// invert advance state.
advance = !advance;
// restart timer
timer.start();
}
同樣基於遊戲狀態的輸入框,你的敵人的控制動畫:
/** frame handler, advancing enemy if 'advance' is true */
function frameHandler(event:Event):void
{
if (advance) { /** move enemy forward */ }
}
你的敵人的這種交替的狀態,輸出:
提前爲下一個2秒
停止前進,等待5秒
前進2秒
停止前進,等待5秒
前進接下來的2秒
嗨,男士,謝謝。我現在想要做的就是運行它,讓它們前進幾秒鐘,然後在this.rotation + = 5時停止,直到它等於正確的角度(面對玩家)。我認爲我的代碼改變方向給玩家很好,但敵人甚至不旋轉,我認爲這是因爲我對定時器或其他東西還是很不滿。 –
雖然我很欣賞你的幫助。 –
這是我目前的問題代碼: \t \t \t功能redirectPlayer():無效 \t \t \t { \t \t \t \t VAR enGlobalPos:點= localToGlobal(新點(this.x,this.y)) \t \t \t \t var dX:Number = enGlobalPos.x - playerLoc.x; \t \t \t \t var dY:Number = enGlobalPos.y - playerLoc.y; \t \t \t \t //獲取敵人旋轉 \t \t \t \t VAR radRotation:數= Math.atan2(DY,DX); \t \t \t \t degRotation = radRotation *(180/Math.PI); \t \t \t \t //設置旋轉到玩家 \t \t \t \t this.rotation + = enTurnSpeed; \t \t \t \t如果(this.rotation == degRotation) \t \t \t \t { \t \t \t \t \t this.rotation = 0; \t \t \t \t \t upKey = true; \t \t \t \t \t moveTimer.start(); \t \t \t \t}那不看的話格式化 –