Estoy iniciándome en desarrollar juegos de plataforma en as3. Y el paso que debo dar ahora es incluir la Vcam para que pueda seguir todo el tiempo al personaje.
En as2 no es problema para mi. Pero es obvio que no funciona de la misma manera pues simplemente no obtengo resultados.
He buscado información en Internet y la mayoría menciona que debo borrar del código de la Vcam la siguiente línea de código: addEventListener(Event.ENTER_FRAME, camControl); Esto con el fin de poder llamar a esa función ya que es la que controla la Vcam como tal. Lo he intentado pero no veo solución.
En todos los ejemplos que he visto la cámara ya está en la línea de tiempo. Quizás esa sea la razón por la cual no me funciona a mi, ya que yo la estoy insertando con addChild().
Pues son mis primeras pruebas de juego en as3. Agradezco toda la ayuda y/o información que me puedan brindar.
A continuación los códigos que estoy utilizando.
El código de prueba que tengo es el siguiente:
Código:
El código de la Vcam es el sigueinte: import flash.events.Event; import flash.events.KeyboardEvent; var per:Per = new Per(); // Personaje var esc:Esc = new Esc(); // Escenario esc.y = 582; var cam:Cam = new Cam(); // Vcam cam.width = 1024; cam.height = 768; addChild(esc); addChild(per); addChild(cam); var left:Boolean = false; var up:Boolean = false; var right:Boolean = false; var down:Boolean = false; function perMove(e:KeyboardEvent):void{ if(e.keyCode == 37){ left = true; } if(e.keyCode == 38){ up = true; } if(e.keyCode == 39){ right = true; } if(e.keyCode == 40){ down = true; } } stage.addEventListener(KeyboardEvent.KEY_DOWN,perMove); function perCantMove(e:KeyboardEvent):void{ if(e.keyCode == 37){ left = false; } if(e.keyCode == 38){ up = false; } if(e.keyCode == 39){ right = false; } if(e.keyCode == 40){ down = false; } } stage.addEventListener(KeyboardEvent.KEY_UP,perCantMove); function moveListener(e:Event):void{ if(left == true){ per.x -= 5; } if(up == true){ per.y -= 5; } if(right == true){ per.x += 5; } if(down == true){ per.y += 5; } } per.addEventListener(Event.ENTER_FRAME,moveListener); function camMove(e:Event):void{ cam.x = per.x; cam.y = per.y; } cam.addEventListener(Event.ENTER_FRAME,camMove);
Código:
var cX:Number; var cY:Number; var sX:Number; var sY:Number; this.visible = false; var oldMode:String = stage.scaleMode; stage.scaleMode = StageScaleMode.NO_SCALE; cX = stage.stageWidth/2; cY = stage.stageHeight/2; sX = stage.stageWidth; sY = stage.stageHeight; stage.scaleMode = oldMode; stage.align=StageAlign.TOP_LEFT; addEventListener(Event.ENTER_FRAME, camControl); addEventListener(Event.REMOVED, resetStage); function camControl(event:Event):void { var xScale:Number = sX / this.width; var yScale:Number = sY / this.height; parent.x = cX - (this.x * xScale); parent.y = cY - (this.y * yScale); parent.scaleX = xScale; parent.scaleY = yScale; } function resetStage(event:Event):void { removeEventListener(Event.ENTER_FRAME, camControl); parent.scaleX = 1; parent.scaleY = 1; parent.x = 0; parent.y = 0; }