2017-04-26 104 views
-1

我試圖把下面的AS2代碼翻譯成AS3,因爲我有Adobe Flash CC,據我所知(從研究,試驗和錯誤),它不支持AS2代碼。任何幫助將不勝感激...什麼是以下AS2代碼的AS3等效物?

onClipEvent(load) { 
speed = 0; 
acceleration = 0.4; 
speedDecay = 0.96; 
maxSpeed = 10; 
backSpeed = 1; 
} 

onClipEvent(enterFrame) { 
    if(Math.abs(speed) > 0.3) { 
     speed *= speedDecay; 
    }else { 
     speed = 0; 
    } 
    if(Key.isDown(Key.UP)) { 
     if (Math.abs(speed) >= maxspeed) { 
      speed += acceleration; 
      } 
     } 
    if(Key.isDown(Key.DOWN)) { 
     if(speed < 0.5) 
     speed = -2; 
     else 
     speed--; 
    } 
     if (Math.abs(speed)> 0.5) { 
     if (Key.isDown(Key.LEFT)) { 
      _rotation -= 10; 
     } 
     if (Key.isDown(Key.RIGHT)) { 
      _rotation += 10; 
      } 
     } 
     x = Math.sin(_rotation*(Math.PI/180))*speed; 
     y = Math.cos(_rotation*(Math.PI/180))*speed*-1; 

     if (!_root.ground.hitTest(_x+x, _y+y, true)) { 
     _x += x; 
     _y += y; 
     }else { 
     speed -= speed*1.5; 
     } 
} 

此代碼將在我的汽車遊戲的汽車層。

+1

那麼,什麼是錯,你試圖使AS3版本? **顯示代碼**,以便我們可以提供建議。否則不清楚**特定問題**在這裏。手冊(或Google)可以告訴你如何製作AS3的enterFrame函數,並顯示AS3鍵盤示例代碼 –

+0

Adob​​e Flash CC使用AS3而不是AS2,所以我需要將上面的AS2代碼改成AS3。 –

+0

我知道關於AS2被棄用。該網站的要點是在啓動**之後詢問何時卡住**。一個很好的問題包括_「..到目前爲止,我已經爲AS3版本做了這些努力,但我堅持把這個XYZ部分轉換成AS2代碼」_ –

回答

1

將這個代碼汽車的影片剪輯中的第1幀:

var speed: Number = 0; 
var acceleration: Number = 0.4; 
var speedDecay: Number = 0.96; 
var maxSpeed: Number = 10; 
var backSpeed: Number = 1; 
var pressedKeys: Object = {} 

stage.addEventListener(Event.ENTER_FRAME, loop) 
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown) 
stage.addEventListener(KeyboardEvent.KEY_UP, keyup) 

function keydown(e: KeyboardEvent) { 
    pressedKeys[e.keyCode] = true 
} 
function keyup(e: KeyboardEvent) { 
    if (pressedKeys[e.keyCode]) { 
     pressedKeys[e.keyCode] = false 
    } 
} 

function loop(e: Event) { 
    if (Math.abs(speed) > 0.3) { 
     speed *= speedDecay; 
    } else { 
     speed = 0; 
    } 
    if (pressedKeys[Keyboard.UP]) { 
     if (Math.abs(speed) >= maxSpeed) { 
      speed += acceleration; 
     } 
    } 
    if (pressedKeys[Keyboard.DOWN]) { 
     if (speed < 0.5) 
      speed = -2; 
     else 
      speed--; 
    } 
    if (Math.abs(speed) > 0.5) { 
     if (pressedKeys[Keyboard.LEFT]) { 
      this.rotation -= 10; 
     } 
     if (pressedKeys[Keyboard.RIGHT]) { 
      this.rotation += 10; 
     } 
    } 
    var vx: Number = Math.sin(this.rotation * (Math.PI/180)) * speed; 
    var vy: Number = Math.cos(this.rotation * (Math.PI/180)) * speed * -1; 
    if (!MovieClip(root).ground.hitTestPoint(this.x + vx, this.y + vy, true)) { 
     this.x += vx; 
     this.y += vy; 
    } else { 
     speed -= speed * 1.5; 
    } 
} 
+0

我把你的代碼放入汽車影片剪輯圖層的第1幀。但是,當我調試電影時,它會毫無錯誤地播放電影,但我無法控制汽車在電影中移動。 –

+1

它應該在影片剪輯中,而不是圖層。至少它看起來像曼紐爾所暗示的那樣。我沒有在時間表上編碼,所以我可能會誤解。 –

+0

如何定義變量「root」? –

相關問題