2013-04-18 81 views
0

我會開始承認我是ActionScript的初學者,我正在編寫自己的基本街機遊戲(類似於舊的街機遊戲「過不去」)。雖然我已經能夠編碼精靈的運動,但我正在尋找讓精靈翻轉以面向另一種方式,當我按下右箭頭。我想或者我可以試着圍繞它的軸旋轉對象(我已經嘗試了多次,並且證明很困難),或者我可以嘗試用另一個Sprite替換當前的Sprite(這只是面向相反方向的Sprite )。我到處搜索了一種用另一個精靈替換精靈的方法,但無濟於事。當使用某個keyCode時,如何給這個精靈一個翻轉效果呢?我無法讓我的精靈「翻轉」

回答

0

你使用的是as2/as3嗎?如果使用as2,則需要通過actionScript鏡像位圖,或者使用鏡像到顯示列表的 添加第二個位圖,如果您使用as2,則可以將軸Y翻轉180度 。

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown); 

    function keyPressedDown(event:KeyboardEvent):void 
    { 
     var key:uint = event.keyCode; 

    switch (key) 
    { 
    case Keyboard.LEFT : 
        myMovieClip.rotaionY = 180; // MC will be mirrored 
     break; 
    case Keyboard.RIGHT : 
        myMovieClip.rotaionY = 0; 

} 
+0

rotationY更容易理解,但它將影片剪輯設置爲'3d模式'(使用'.transform.matrix3D'而不是'.transform.matrix'),它僅支持ActionScript 3.0,並且它從Flash Player 10向上工作。使用2D轉換矩陣稍微強硬一點,但不是火箭科學的一個簡單的翻轉,並在ActionScript 2.0作品,並與大多數Flash播放器版本(我下定義爲Flash播放器6) –

+0

當然,我認爲rotationY就足夠了,大聲笑 – joshua

1

試試下面這個簡單的代碼。這裏「對象」是要翻轉

stage.addEventListener(KeyboardEvent.KEY_DOWN, OnKeyDown); 

function OnKeyDown(event:KeyboardEvent):void 
{ 
    var uiKeyCode:uint = event.keyCode; 
    switch (uiKeyCode) 
    { 
     case Keyboard.LEFT : 
      object.scaleX = -1; //flip 
      break; 
     case Keyboard.RIGHT : 
      object.scaleX = 1; //unflip 
      break; 
    } 
} 

注意的影片剪輯/精靈:如果你想電影剪輯,而不會在其位置上的任何變化翻轉,則影片剪輯必須水平中心註冊。

告訴我,如果這對你有用。

+0

對於初學者來說比我的解決方案簡單得多(+1) –

+0

是的喬治。但我猜矩陣速度更快。不知道 – shinobi

+1

不是真的。 scaleX無論如何都使用背後的變換矩陣,所以這是使用setter的問題。 Getter在as3上有點慢(比setter慢),我的版本使用2(1來獲取矩陣,一個檢查'a'的值)和一個條件。在這種情況下,您的解決方案更簡單快捷;) –