2013-10-22 21 views
0

我有一個簡單的城市動畫,汽車正好穿過屏幕並向左滾動。該動畫由ENTER_FRAME事件運行,但我想使用一個計時器,我無法弄清楚。這裏是我的代碼:在AS3中使用計時器事件動畫

package { 
import flash.display.*; 
import flash.events.*; 
import flash.utils.*; 


public class cityApp extends MovieClip { 
    function cityApp() { 
     //TASK 1 : INITIALIZE THE MOVIECLIPS ON STAGE 
     Car.x = 10; 
     Ball.x = 500; 
     Sunset.alpha = 0; 

     //TASK 2: ADD A LISTENER TO LOOP THROUGH THE FRAME 
     var atimer:Timer= new Timer(500, 30); 
     atimer.addEventListener(TimerEvent.TIMER, CityMoves); 
    } 

    function CityMoves(event:TimerEvent):void { 
     //TASK 1: 
     // A. DRIVE THE CAR ACROSS THE STAGE BY INCREMENTING ITS 
     // X POSITION BY 2 
     Car.x += 2; 
     //B. ROTATE THE WHEELS OF THE CAR 
     Car.Wheel1.rotation+=3; 
     Car.Wheel2.rotation+=3; 

     //TASK 2: MOVE THE BALL IN THE OPPOSITE POSITION OF THE CAR 
     //ROTATE THE BALL SO THAT IT APPEARS TO BE ROLLING 
     Ball.x -= 2; 
     Ball.rotation-= 5; 

     //TASK 3: THE EVENING SUNSET GRADUALLY APPEARS AS ITS ALPHA INCREASES. 
     Sunset.alpha += .007; 
    } 
} 

} 任何幫助深表感謝。

回答

1

應該啓動計時器。

atimer.start(); 
+0

哇。是的,這有幫助。謝謝! –

0

首先使計時器成爲一個成員變量(從技術上講,只是確保它保留了它的實時參考)。然後在設置後啓動它:

package { 
import flash.display.*; 
import flash.events.*; 
import flash.utils.*; 


public class cityApp extends MovieClip { 
    private var atimer:Timer; // change 1/3 

    function cityApp() { 
     //TASK 1 : INITIALIZE THE MOVIECLIPS ON STAGE 
     Car.x = 10; 
     Ball.x = 500; 
     Sunset.alpha = 0; 

     //TASK 2: ADD A LISTENER TO LOOP THROUGH THE FRAME 
     atimer = new Timer(500, 30); // change 2/3 
     atimer.addEventListener(TimerEvent.TIMER, CityMoves); 
     atimer.start(); // change 3/3 
    } 

    function CityMoves(event:TimerEvent):void { 
     //TASK 1: 
     // A. DRIVE THE CAR ACROSS THE STAGE BY INCREMENTING ITS 
     // X POSITION BY 2 
     Car.x += 2; 
     //B. ROTATE THE WHEELS OF THE CAR 
     Car.Wheel1.rotation+=3; 
     Car.Wheel2.rotation+=3; 

     //TASK 2: MOVE THE BALL IN THE OPPOSITE POSITION OF THE CAR 
     //ROTATE THE BALL SO THAT IT APPEARS TO BE ROLLING 
     Ball.x -= 2; 
     Ball.rotation-= 5; 

     //TASK 3: THE EVENING SUNSET GRADUALLY APPEARS AS ITS ALPHA INCREASES. 
     Sunset.alpha += .007; 
    } 
} 
+0

是的,謝謝。我只是忘了啓動計時器。今天早上咖啡太多了。 :) –