Comunidad de diseño web y desarrollo en internet online

Problema con mi Script, no veo la bala, en la pantalla

Citar            
MensajeEscrito el 16 Sep 2012 08:38 am
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

public class Mira extends MovieClip
{
public var velocidad:Number = 3;

public var arma:mira_mc = new mira_mc;
public var b = new balaDos_mc();

public function Mira()
{

//escucha del frame del mouse para que gire
addEventListener(Event.ENTER_FRAME,actualizar);
//poner una escucha para gregar al arma.
addEventListener(Event.ADDED_TO_STAGE,inicializar);
}

function inicializar(evento:Event)
{
stage.addEventListener(MouseEvent.CLICK, fire);
}

function fire(evento:MouseEvent)
{
b.rotation = rotation;
b.x = x;
b.y = y;
//agrego la bala al arma. para que me lo muestre en el stage
//solor veo la bala que se queda en el arma?
arma.addChild(b);
arma.play();
trace("fire" + b);
}

function actualizar(evento:Event)
{
var dx = arma.parent.mouseX - arma.x;
var dy = arma.parent.mouseY - arma.y;
//Calculamos los radianes en base a un punto. Es decir el radio de giro del objeto en pantalla
var redianes = Math.atan2( dy,dx );
//Convertimos los radianes en grados.
var grados = redianes * 180 / Math.PI ;
arma.rotation = grados;
}//fin actualizar
}

}

Por Jose37

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Sep 2012 02:22 pm
En primer lugar estás instanciando la bala cuando el arma dispara. Yo instanciaría la bala inmediatamente después de instanciar el arma.
Luego, no veo que las variables rotation, x, e y, Tengan un valor predeterminado. Le estás dando una posición x, y, no definida. La bala se instancia pero sin una posición definida por eso no la ves.

Código ActionScript :

b.rotation = rotation;
b.x = x;
b.y = y;.(...)


Si pretendes que la bala ocupe en un principio la posición del arma, deberías haberlo hecho así:

Código ActionScript :

function actualizar(evento:Event)
{
var dx:Number = mouseX - arma.x;
var dy:Number = mouseY - arma.y;
var grados:Number = redianes * 180 / Math.PI ;
arma.rotation = grados;

if(fire){
//mover la bala hacia el objetivo.
}

else{

b.rotation = arma.rotation;
b.x = arma.x;
b.y = arma.y;
}
}//fin actualizar



Y a continuación:

Código ActionScript :

function fire(evento:MouseEvent)
{
//Guardar en 2 variables la posición x e y del mouse.
fire=true;
}


Te recomiendo que leas un poco más sobre actionScript 3.0.

Por viroguitar

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Sep 2012 11:36 pm
Se que tengo que leer mas, el código ese funcionaba bien, no es mio el código, cuando lo adapte a un juego de soldados empezaron los problemas. Saludos y gracias por la ayuda, pediría, si lo completas así me guió mejor .

Por Jose37

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.