Comunidad de diseño web y desarrollo en internet online

sentencia CUANDO

Citar            
MensajeEscrito el 15 Dic 2009 11:15 am
Hola gente!
Me gustaría saber si hay alguna sentencia de Actionscript para que se ejecute una función CUANDO ocurre algo....

Por ejemplo: Al presionar el boton que se ejecute tal acción cuando el alfa del clipMC sea igual a 100...

Podéis echarme un cable?

Muchas gracias :)

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 11:39 am
¿Espera a que ocurra eso o lo hace si eso es cierto en el momento en que lo oprimes?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:41 am
Muchas gracias por tu rápida respuesta Solisarg.

Me gustaría que al hacer clic esperara a que el alfa fuera igual a 100, y en ese momento se ejecutara una acción...

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 11:43 am
¿Como estás haciendo el alpha? ¿Por animación?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:46 am
tengo un clip con este AS:

Código ActionScript :

onClipEvent (enterFrame) {
   //find alpha of new pic
   picalpha = Math.round(getProperty(picnum, _alpha));
   //find alpha of old pic
   oldpicalpha = Math.round(getProperty(oldpicnum, _alpha));
   //If you want to change fade speed, alter + & - amounts below!
   //if the new pic alpha is 0, fade it up to 100
   if (picalpha <100) {
      setProperty(picnum, _alpha, picalpha + 5);
   }
   //if the old pic alpha is 100, fade it down to 0
   if (oldpicalpha >0) {
      setProperty(oldpicnum, _alpha, oldpicalpha - 5);
   }
}

Ese clip a su vez tiene dentro varios clips (one, two, three, four, five)

Después desde unos botones externos ejecuto la acción de la siguiente forma:

Código ActionScript :

_root.botonera.trailer.onRelease = function() {
if (_root.bg.picnum eq "one") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "one";
   }

};



saludos :)

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 11:56 am
Ya veo, el menú tiene sintaxis de Flash 4, debe ser una adaptación. Tendrías que setear alguna variable en el clip que hace el fade. Supongamos que tiene nombre de isntancia "uno", entonces el botón haría

Código ActionScript :

btn.onPress = function(){
  uno.cambia = true
}


Luego en el onEnterFrame agregas

if(picalpha == 100 && cambia) _parent.loquesea()

Donde loquesea es el nombre de la función que invocas cuando el alpha llega a 100

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 12:13 pm
ummm...
Creo que me he explicado mal.

Ese AS es para el efecto fade in/out de varias secciones de la web. Las secciones son las que tienen de nombre de instancia: one, two, three, four, five y que están dentro de un clip general que se llama "bg" en el cual está el AS

Código ActionScript :

onClipEvent (enterFrame) {
   //find alpha of new pic
   picalpha = Math.round(getProperty(picnum, _alpha));
   //find alpha of old pic
   oldpicalpha = Math.round(getProperty(oldpicnum, _alpha));
   //If you want to change fade speed, alter + & - amounts below!
   //if the new pic alpha is 0, fade it up to 100
   if (picalpha <100) {
      setProperty(picnum, _alpha, picalpha + 5);
   }
   //if the old pic alpha is 100, fade it down to 0
   if (oldpicalpha >0) {
      setProperty(oldpicnum, _alpha, oldpicalpha - 5);
   }

}


después en el root, tengo un clip llamado botonera y dentro están los botones que ejecutan la orden:

Código ActionScript :

_root.botonera.fotos.onRelease = function() {
if (_root.bg.picnum eq "three") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "three";
   }
};

Donde three puede ser one, two, three, four, five dependiendo del boton que sea. En este caso, como es el boton fotos, le corresponde el clip three...

Lo que pretendo, es que una vez hecha la transición de una sección a otra, poder mandar aparecer el contenido de la sección. Por eso necesito que se ejecuten las acciones una vez llegado el alpha al 100, para que no aparezca el contenido antes de que se haga la transición...

Perdona por no haberme explicado bien.

Saludos!

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 12:16 pm
por cierto, la orden de los botones está en un frame del _root ! no está en los botones (en realidad no son botones, son clips)

Saludos :)

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 12:19 pm
Si siempre que llega a 100 quieres hacer algo, olvida lo del botón, simplemente agregas (de paso traduzco)

Código ActionScript :

...
if (picalpha <100) { 
      setProperty(picnum, _alpha, picalpha + 5); 
   } 
   //if the old pic alpha is 100, fade it down to 0 
   if (oldpicalpha >0) { 
      setProperty(oldpicnum, _alpha, oldpicalpha - 5); 
   } 
if(picalpha == 100) _parent.loquesea()


Entonces ejecutará la función loquesea al llegar a 100

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 12:22 pm
El problema es que dependiendo del boton que presione, quiero que haga una acción u otra... Supongo que el AS tendría que ser para el botón... no?

muchas gracias por tu paciencia :)

saludos.

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 12:26 pm
La funcion loquesea chequea que botón ha sido presionado:

Código ActionScript :

var btn1:Boolean = false
var btn2:Boolean = false

function loquesea(){
  if(btn1){
    ....
  }
  if(btn2){
    .....
  }
}

boton1.onPress = function(){
   btn1 = true
}


Así por lo menos te ahorras código

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 01:53 pm
esto es lo que tengo puesto en el clip bg:

Código ActionScript :

onClipEvent (enterFrame) {
   var tra:Boolean = false;
   var sin:Boolean = false;
   var fot:Boolean = false;
   var equi:Boolean = false;
   var pos:Boolean = false;
   import mx.transitions.Tween;
   import mx.transitions.easing.*;
   //find alpha of new pic
   picalpha = Math.round(getProperty(picnum, _alpha));
   //find alpha of old pic
   oldpicalpha = Math.round(getProperty(oldpicnum, _alpha));
   //If you want to change fade speed, alter + & - amounts below!
   //if the new pic alpha is 0, fade it up to 100
   if (picalpha<100) {
      setProperty(picnum, _alpha, picalpha+5);
   }
   //if the old pic alpha is 100, fade it down to 0 
   if (oldpicalpha>0) {
      setProperty(oldpicnum, _alpha, oldpicalpha-5);
   }
   if (picalpha == 100){_parent.loquesea();}
   
}


y esto es lo que tengo en un frame del _root, que es dd declaro las acciones de los botones...

Código ActionScript :

///////////////////BOTONERA
///trailer
_root.botonera.trailer.onRelease = function() {
   _root.player._alpha = 100;
   _root.player.display.play();
   if (_root.bg.picnum eq "one") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "one";
   }

};

///sinopsis
_root.botonera.sinopsis.onRelease = function() {
   sinopsis = true;
   _root.player._alpha = 0;
   _root.player.display.stop();
   if (_root.bg.picnum eq "two") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "two";
   }

};

///fotos
_root.botonera.fotos.onRelease = function() {
   _root.player._alpha = 0;
   _root.player.display.stop();
   if (_root.bg.picnum eq "three") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "three";
   }
};

///equipo
_root.botonera.equipo.onRelease = function() {
   _root.player._alpha = 0;
   _root.player.display.stop();
   if (_root.bg.picnum eq "four") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "four";
   }
};

///poster
_root.botonera.poster.onRelease = function() {
   _root.player._alpha = 0;
   _root.player.display.stop();
   if (_root.bg.picnum eq "five") {
   } else {
      _root.bg.oldpicnum = _root.bg.picnum;
      _root.bg.picnum = "five";
   }
};

function loquesea() {
      if (trailer) {

      }
      if (sinopsis) {
         var alfa:Tween = new Tween(_root.sinopsis_mc, "_alpha", Strong.easeOut, 0, 100, .5, true);
      }
      if (fotos) {
      }
      if (equipo) {
      }
      if (poster) {
      }
}


Asi lo que consigo, es que al presionar el boton sinopsis, aparezca durante un instante el sinopsis_mc y después desaparezca. Después de hacer clic en sinopsis, el resto de los botones funcionan exactamente igual... :S
Qué he hecho mal?



Saludos :)

Por euflipo

33 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Dic 2009 02:03 pm
Veo que estás mezclando dos lógicas que compiten: un script de los tiempos de Flash 4 que hace un fade de no se que y luego lo mismo, pero afuera, usando la clase Tween. Define primero un solo mecanismo y una estructura, sino ambos compiten y se invalidan mutuamente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Dic 2009 02:09 pm
sinopsis_mc es un clip que no tiene nada que ver con el clip two que es el que le corresponde al boton sinopsis para que haga el fade in ....
Piensa que es lo mismo pero en vez de ser el tween para sinopsis_mc es para "clipcualquiera" ...

Por euflipo

33 de clabLevel



 

msie7

 

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