Soy nuevo en el foro y en esto de la programación en actiónScript 3. Escribo esto para ver si alguien me puede echar una mano.
El tema es que estoy haciendo un jueguecillo para movíl para ir practicando y me he quedado atascado.
He pasado el codigo del manejo del personaje con el teclado a botones movieclip. Pero por alguna razón no cosigo la combinaciones que se pueden hacer con el teclado ( correr de izquierda y derecha con la tecla pulsada y saltar al mismo tiempo pulsando la tecla de saltar) con los botones. Funciona bien, pero cuando tengo el "botón movieclip" de correr para izquierda o derecha el del salto no funciona y el mismo pasa con el de izquierda o derecha. Para que el botón haga su función no puedo pulsar ningún otro. El caso es que con el teclado se puede hacer sin ningún problema y es eso lo que no puedo conseguir.
¿Se puede hacer esto con botones?. ¿Se pueden combinar lo botones como las teclas?.
Gracias.
Con teclado:
var rightKeylsDown:Boolean = false;
var leftKeylsDown:Boolean = false;
var upKeylsDown:Boolean = false;
var downKeylsDown:Boolean = false;
var gravity:Number = 1;
var yVelocity:Number = 0;
var topp:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN,pulsatecla);
stage.addEventListener(KeyboardEvent.KEY_UP,sintecla);
function pulsatecla(event:KeyboardEvent):void
{
if(event.keyCode==Keyboard.RIGHT)
{
rightKeylsDown = true;
}
if(event.keyCode==Keyboard.LEFT)
{
leftKeylsDown = true;
}
if(event.keyCode==Keyboard.UP)
{
upKeylsDown = true;
}
if(event.keyCode==Keyboard.DOWN)
{
downKeylsDown = true;
}
}
function sintecla(event:KeyboardEvent):void
{
if(event.keyCode==Keyboard.RIGHT)
{
rightKeylsDown = false;
}
if(event.keyCode==Keyboard.LEFT)
{
leftKeylsDown = false;
}
if(event.keyCode==Keyboard.UP)
{
upKeylsDown = false;
}
if(event.keyCode==Keyboard.DOWN)
{
downKeylsDown = false;
}
}
jugador_mc.addEventListener(Event.ENTER_FRAME,movejugador);
function movejugador(event:Event):void
{
if(rightKeylsDown)
{
jugador_mc.x+=5;
}
if(leftKeylsDown)
{
jugador_mc.x-=5;
}
if(upKeylsDown && topp)
{
yVelocity =-15;
topp =false;
}
yVelocity += gravity;
if (!suelo_mc.hitTestPoint(jugador_mc.x,jugador_mc.y,true))
{
jugador_mc.y+=yVelocity;
}
if(yVelocity >20)
{
yVelocity =20;
}
for (var i:int=0;i<10;i++)
{
if (suelo_mc.hitTestPoint(jugador_mc.x,jugador_mc.y,true))
{
jugador_mc.y--;
yVelocity =0;
topp =true;
}
}
}
Con botones:
var rightKeylsDown:Boolean = false;
var leftKeylsDown:Boolean = false;
var upKeylsDown:Boolean = false;
var downKeylsDown:Boolean = false;
var gravity:Number = 1;
var yVelocity:Number = 0;
var topp:Boolean = false;
stage.addEventListener(MouseEvent.MOUSE_DOWN,pulsatecla);
stage.addEventListener(MouseEvent.MOUSE_UP,sintecla);
function pulsatecla(event:MouseEvent):void
{
if(event.target==der_mc)
{
rightKeylsDown = true;
}
if(event.target==izq_mc)
{
leftKeylsDown = true;
}
if(event.target==salto_mc)
{
upKeylsDown = true;
}
}
function sintecla(event:MouseEvent):void
{
if(event.target==der_mc)
{
rightKeylsDown = false;
}
if(event.target==izq_mc)
{
leftKeylsDown = false;
}
if(event.target==salto_mc)
{
upKeylsDown = false;
}
}
jugador_mc.addEventListener(Event.ENTER_FRAME,movejugador);
function movejugador(event:Event):void
{
if(rightKeylsDown)
{
jugador_mc.x+=5;
}
if(leftKeylsDown)
{
jugador_mc.x-=5;
}
if(upKeylsDown && topp)
{
yVelocity =-15;
topp =false;
}
yVelocity += gravity;
if (!suelo_mc.hitTestPoint(jugador_mc.x,jugador_mc.y,true))
{
jugador_mc.y+=yVelocity;
}
if(yVelocity >20)
{
yVelocity =20;
}
for (var i:int=0;i<10;i++)
{
if (suelo_mc.hitTestPoint(jugador_mc.x,jugador_mc.y,true))
{
jugador_mc.y--;
yVelocity =0;
topp =true;
}
}
}