2009-05-04 68 views
1

對於初學者:我使用Flash CS3和ActionScript 2.0實施青蛙閃光燈

工作我想重拍青蛙遊戲,我有點堅持把汽車在屏幕上。

對於那些不認識青蛙的人:http://www.actionscript.org/showMovie.php?id=1157,但我沒有實現日誌。

最大的問題是我有3輛車,所有這些都是圖庫中的動畫片段,我不會把它們放在舞臺上。多個實例必須同時出現。這些車需要雙向驅動,所有3輛車必須出現在所有車道(我有4條車道) 當然,1車道只有1個方向。

我可以用hitTest()來查看我的青蛙是否撞到了其中一輛車,但我需要讓它逼真,這意味着我無法在每條車道上硬編碼汽車數量。

我也似乎無法找到如何繞其中心一個影片剪輯...

回答

2

嗯,有幾件事情我可以建議。

對於汽車,請將每輛汽車作爲圖書館中的一個單獨對象(不要放在舞臺上)。當你需要在屏幕上顯示一個使用attachMovie()來創建你想要的汽車的一個實例。

爲了使它們面向不同的方向(我相信你只需要左右),你可以在庫中創建每輛汽車的2個副本,每個副本面向每個方向。或者,我認爲如果您將xScale值設置爲-100%,我認爲它會水平翻轉,因此您可以爲兩者使用相同的庫實例。但是,如果您爲每個方向分別使用不同的庫實例,則可能更容易處理,而不是在一個方向上進行旋轉。

+0

感謝。排隊人員已經表示,只有背景可以在舞臺上,這意味着所有的汽車都在圖書館。 – KdgDev 2009-05-04 14:36:22

1

回答有關旋轉的問題,影片剪輯圍繞其註冊點旋轉,而不是圍繞其視覺中心旋轉。因此,當您創建剪輯時,請確保符號編輯屏幕上的十字線出現在中心。十字準線是註冊點,它基本上定義了剪輯上x:0,y:0的位置。

這聽起來像是你的問題真的是關於如何使用hitTest來查看青蛙是否碰到過任何一輛汽車,而不管哪一輛,舞臺上有多少人等。所以我要做的是創建一個類對於帶有一個靜態成員的汽車,它可以是指向青蛙的指針,然後讓班級檢查它是否擊中青蛙。

於是開始了:

public class Car extends MovieClip{  
    public static var frog:MovieClip; 
    private var interval; 
    public function Car(){ 
     super(); 
     interval = setInterval(checkHit,500); 
    } 
    private function checkHit(){ 
      if(this.hitTest(frog)){ 
      trace("the frog hit the car"); 
      clearInterval(interval); 
      //do what you need to do when the frog gets hit 
     } 
    } 
} 

對於每個單獨的車,可以延長汽車類:

class Truck extends Car{ 
    public function Truck(){ 
     super(); 
    } 
} 

class Volkswagen extends Car{ 
    public function Volkswagen(){ 
     super(); 
    } 
} 

class Bus extends Car{ 
    public function Bus(){ 
     super(); 
    } 
} 

創建單獨的類之後,使用鏈接上你的庫符號每輛車。 (右鍵單擊符號,選擇「鏈接」,然後在「類」字段中鍵入您的類名稱)。

最後,青蛙成員設置爲你的青蛙在舞臺上

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth()) 
Car.frog = frog; //set the static var "frog" to your frog instance 

現在你的車都應該檢查自己的,無論他們打的青蛙。

的另一種選擇是代碼中的每個不同的汽車的movieclip的第一幀上checkHit()函數,而不是使用類爲每個:

this.onEnterFrame = function(){ 
    if(this.hitTest(_root.frog)){ 
     trace("the frog hit the car"); 
     //do what you need to do when the frog gets hit 
     delete this.onEnterFrame; 
    } 
}