Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2012, 19:38
gcrlink
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Pregunta Vcam as3 Juegos

Hola a todos...

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:
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);
El código de la Vcam es el sigueinte:
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;
 }

Última edición por gcrlink; 03/04/2012 a las 19:46