2017-04-26 103 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”? –

相关问题