-1

Je suis en train de traduire le code AS2 suivant en AS3 parce que j'ai Adobe Flash CC, qui, pour autant que je sache (de la recherche, essais et erreurs), ne supporte pas le code AS2. Toute aide serait grandement appréciée ...Quel est l'équivalent AS3 du code AS2 suivant?

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; 
     } 
} 

Ce code va dans la couche de voiture de mon jeu de voiture.

+1

Alors quel est le problème avec la version AS3 que vous avez essayé de faire? ** Afficher le code ** afin que nous puissions vous conseiller. Sinon, ne sachez pas quel est le ** problème spécifique ** ici. Le manuel (ou Google) peut vous dire comment faire une fonction 'AS3 enterFrame' et montrera' code exemple de clavier AS3' –

+0

Adobe Flash CC utilise AS3, pas AS2, donc je dois changer le code AS2 ci-dessus en AS3. –

+0

Je sais que AS2 est obsolète. Le point du site est de demander quand coincé ** après avoir commencé ** quelque chose. Une bonne question comprend _ ".. jusqu'à présent, j'ai fait cet effort vers la version AS3 mais je suis coincé sur la conversion de cette partie XYZ du code AS2" _ –

Répondre

1

Mettez ce code à l'intérieur de movieclip de votre voiture sur l'image 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

J'ai mis votre code dans l'image 1 dans ma couche de clip de voiture. Cependant, quand je débogue le film, il joue le film sans erreurs, mais je ne peux pas contrôler la voiture pour le faire bouger dans le film. –

+1

Il devrait être dans le clip lui-même, pas dans le calque. Au moins, il semble que c'est ce que suggère Manuel. Je ne code pas sur le calendrier donc j'ai peut-être mal compris. –

+0

Comment définir la variable "root"? –