Comunidad de diseño web y desarrollo en internet online

Funcion en instancia de MovieClip

Citar            
MensajeEscrito el 23 May 2006 12:15 am
Hola amigos. ¿Cómo puedo hacer una función en las acciones de la instancia de un MovieClip que nada más se ejecute una vez?. Ejemplo:

Código :

onClipEvent(enterFrame)
{ if(this.a)
  { Funcion(); } //.Ejecutar la función nada más una vez, o sea, que la función no se cicle.
}


¿Alguien tiene idea?, la vdd es algo muy simple pero no sé como hacerlo :crap: . Gracias por su tiempo.

MQ.

Por Manuel Quintero

53 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 23 May 2006 02:15 am
Usa la vieja tecnica de la variable Bandera (flag).

declaras una variable por ejemplo:

Código :

bandera=0;
onClipEvent(enterFrame){ 
if (bandera==0){
if(this.a) {
bandera=1; 
funcion(); 
} 
}
} 


Y eso es todo, el if con la bandera igual a cero, te servira para controlar si paso o no el evento, como acaba de arrancar entra con CERO y al cumplirse la condicion bandera cambia su valor a UNO y ejecuta la funcion, y sale, al volver bandera es igual a UNO asi que no cumple la condicion y no hara nada. Saludos ^^

Por DaHouseCat

Claber

1011 de clabLevel

2 tutoriales

Genero:Masculino  

Smarphones Fan Boy

firefox
Citar            
MensajeEscrito el 23 May 2006 05:10 am
sip, tambien puede ser en el evento onLoad dependiendo de que funcion sea, porque si hace referencia a otros MovieClips puede que no se pueda

Por colaborame

50 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 May 2006 07:31 am
Si solo se tiene que efectuar una vez y solo una en todo el programa, borra la función cuando termine de ejecutarse poniendo esta instrucción dentro de la función como última línea de la misma o nada mas salir de ella.
delete nombredefuncion;
si quiere que se ejecute solo una vez en un ciclo, hay varias maneras.
if (!flag) { lafuncion() ; flag= true} ;
Esto se ejecutará solo una vez aún dentro de un bucle o llamada de evento.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 23 May 2006 01:54 pm
¿Alguien ha programado en C++?, del main mandas llamar la función y el control se pasa a la misma. Cuando se terminan de ejecutar todas las sentencias de la función, el control vuelve a main sin ciclar las sentencias de la función, ¿me explico?. ¿Se puede hacer algo así en Flash ActionScript?

MQ.

Por Manuel Quintero

53 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 23 May 2006 02:28 pm
Si, estoy aburrido de programar en C y C++.
Lo que hace actionscript es lo mismo. Lo que pareces no entender es que estas llamando recursivamente a una función al usar eventos (u otra función de llamada). Pasaría lo mismo en C con una función recursiva en bucle. tendrias que cortarla con bandera o disparo.
Cualquiera de las 2 opciones antes explicadas es perfectamente util.
Añadire que si es una acción en la instancia, puedes ponerla en el frame 1 y solamente esa. todo el recorrido del movie desde el frame 2 y llamada a goto hacia el frame 2 y no se repetirá el 1 nunca. Eso era el antiguo sistema de "motor" en Flash. AHORA en AS2 todo el script se suele colocar en el primer frame del principal ( equivalente a tu "querido" main).

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 23 May 2006 05:13 pm
Ok miren, lo que quiero hacer es algo así:

Código :

onClipEvent(load)
{var a=0;
 var b=true;}
onClipEvent(enterFrame)
{if(this.b)
 {this.Funcion001();
  this.b=false;}}

this.Funcion001=function()
{this._parent.DynamicText001=this.a++;}


Definir una función en la instancia del MovieClip y poder ejecutarla una vez. ¿Cómo lo hago?. Gracias por contestarme.

MQ.

usa las etiquetas code para postear tu código. Mx

Por Manuel Quintero

53 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 23 May 2006 09:15 pm

Código :

if (!iniciado) {Funcion001() ; iniciado= true} ;

function Funcion001(){
{this._parent.DynamicText001=this.a++;}


Esto solo basta. Colócalo en el primer frame del MC. Cuando empiece a "moverse" es decir al ejecutar el primer frame ejecutará la función y nunca más.
Nota: puedes meter dentro del if lo que quieras iniciar solo una vez.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox

 

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