Comunidad de diseño web y desarrollo en internet online

codigo as2

Citar            
MensajeEscrito el 06 Feb 2014 11:21 am
Hola.

Me encuentro con un problema, he estado mirando en el foro pero no lo he encontrado.

Estoy haciendo un juego sencillo en flash, se trata de que al pinchar en un mc se ejecute, eso lo tengo bien.

El problema es que hay tres tipos de mc verdes, amarillos y rojos, y quisiera que al principio solo se pudiera pinchar en los verdes, cuando no queden verdes, los amarillos y cuando no queden amarillos, por ultimo los rojos.

No se cual son las acciones que debo de darles para que eso funcione así, les he puesto nombre de instancia a los amarillos "amarillos", a los verdes "verdes" y a los rojos "rojos".

También están vinculados para actionscript en la biblioteca con el mismo nombre.

Alguien podría ayudarme.

Gracias.

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 06 Feb 2014 02:07 pm
Deberías tener una rutina que se ejecute cada vez que la animación se termine. Supongamos que tienes uno de cada uno, y que al finalizar la animación habilita al siguiente. Orden: verdes, amarillos y rojos.

Código ActionScript :

//Arranca solo verde
verde.enabled = true;
amarillo.enabled = rojo.enabled = false;
function habilita(quien){
  verde.enabled = amarillo.enabled = rojo.enabled = false; 
  this[quien].enabled = true
}


Y en el último fotograma de la animación de verde pones

_root.habilita("amarillo")

En la última de amarillo pones

_root.habilita("rojo")

Pruébalo a ver si te funciona

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Feb 2014 09:58 am
Gracias,

Lo voy a intentar..

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 10 Feb 2014 10:25 am
Hola.

No me funciona, o no soy capaz

Creo que se donde esta el problema, a ver si se explicarme.

En la biblioteca tengo los Mcs, "verde, amarillo y rojo", los Mcs se componen de 5 fotogramas, del 1 al 4 es la animación, y al llegar al fotograma 5 tiene un Stop, con lo que el Mc se ejecuta, pero en el escenario continua, aun que sin nada claro, esta detenido en el fotograma 5.

Rutina no puedo tener por que en el juego tu pinchas en el Mc que quieres.

La solución la veo pero no se la sintaxis.

Seria:

A los verdes con el nombre de instancia en el escenario, "verde1, verde2, verde3..." al hacer click sobre ellos se ejecuten "eso si lo hacen", pero que al llegar al fotograma 5 crear una acción que los deshabilitaran.

Y luego crear otra acción algo asi:

If( "verde1, verde2....." = disabled") {
"amarillo1,amarillo2......" = enabled
"rojo1,rojo2...." = disabled
}

Gracias.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 10 Feb 2014 11:38 am
Hola de nuevo.

He intentado pero no me sale

En los Mcs, en el fotograma 5 he puesto

Código ActionScript :

onEnterFrame = function() {
("enabled = false");   
}

Esto es para deshabilitar el mc al llegar al fotograma 5

Y en la película principal en la capa acciones he recogido los Mcs en arrays en los tres grupos verdes, amarillos y rojos.

Código ActionScript :

var verdes = new Array("v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30");
var amarillos = new Array("a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26");
var rojos = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16");

if (verdes.enabled = true) 
   (amarillos.enabled = false, rojos.enabled = false);


Pero continua sin funcionar

Gracias de nuevo

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 10 Feb 2014 07:46 pm
Ok, tienes problemas básicos de sintaxis para escribir código. Pero ya que te has listado todos los elementos en un array, vanis a simplificar de la siguiente forma.

Lo primero es que tengas un grupo entero, y que al ir dandole a cada uno se vaya deshabilitando hasta que no quede ninguno, por ejemplo todos los verdes. Sería algo así:

Código ActionScript :

var verdes = new Array("v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30");
function deshabilita(quien):void{
   quien.enabled = false;
   for( var i:int = 0; i<verdes.length; i++){
      verdes.splice(verdes.indexOf(quien.name), 1);
      break;
   }
  trace("Ahora quedan "+verdes.length)
}


la llamada desde el ultimo fotograma de cada verde dice

Código ActionScript :

_root.deshabilita(this)


Si tienes un stop en el último fotograma pero no se paran, es porque seguramente la línea de tiempo principal esta loopeando y reinicia todos los MC
Así se tienen que ir deshabilitando los verdes hasta que no quede ninguno. Mira si te funciona .... a partir de allí puedes intentar ver como pasas al siguiente array o vuelve a este hilo y lo vemos.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Feb 2014 07:55 pm
Me da estos dos errores

Código ActionScript :

stop();

var verdes = new Array("v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30");
var amarillos = new Array("a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26");
var rojos = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16");

function deshabilita(quien):void{ //ERROR Después de ':' se espera un identificador de tipo.
   quien.enabled = false;
   for( var i:int = 0; i<verdes.length; i++){ //ERROR No se pudo cargar la clase o interfaz 'int'.
      verdes.splice(verdes.indexOf(quien.name), 1);
      break;
   }
  trace("Ahora quedan "+verdes.length)
}


Gracias

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 11 Feb 2014 08:27 pm
Prueba

Código ActionScript :

function deshabilita(quien:MovieClip):void{ 
   quien.enabled = false;
   for( var i:Number = 0; i<verdes.length; i++){ 
      verdes.splice(verdes.indexOf(quien.name), 1);
      break;
   }
  trace("Ahora quedan "+verdes.length)
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Feb 2014 08:41 pm
Solo uno pero es el mismo.

Código ActionScript :

function deshabilita(quien:MovieClip):void{  // ERROR Después de ':' se espera un identificador de tipo.


Me esta volviendo loco no lo entiendo

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 11 Feb 2014 08:42 pm
Ah, cierto que estas en AS2, sacalo!

function deshabilita(quien:MovieClip){

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Feb 2014 09:03 pm
Ahora no me da error, pero no deshabilita ninguno y en la salida siempre me da 30

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 11 Feb 2014 10:19 pm
Parece que estás haciendo algo que está demasiado lejos de tu conocimiento. Pon un par y juega con ellos, dale tiempo ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Feb 2014 10:55 am
Ya, por eso lo he puesto en el foro, por uqe no me salía.

Gracias de todas formas.

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 13 Feb 2014 11:49 am
Si, pero si te propones cosas demasiado lejos de lo que puedes, lo único que queda es que otros lo hagan por ti, y esa no es la idea del aprendizaje. Se aprende si uno avanza paso a paso. En tu caso tienes problemas básicos de sintaxis. Si quieres aprender, intenta primero algo mas fácil, por ejemplo 10 fichas que se vayan deshabilitando hasta que ninguna funcione, luego lo vas complejizando. Si no te interesa la programación y solo quieres obtener el resultado solo dilo, siempre hay gente dispuesta a hacerlo por ti.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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