Interrelació entre animacions i combinació d'incidències i mètodes  
 
 
 

Una de les coses interessants de programar en Flash és que us permet crear relacions entre els diferents objectes animats.

Podeu establir condicions per executar altres movie clips o per accedir a un frame (marc) determinat d'una animació, o si voleu, diverses condicions a la vegada.

En aquesta pràctica, continuareu desenvolupant l'aplicació del mòdul anterior. Afegireu funcionalitats noves, com:

Creació de botons per controlar les diferents velocitats dels objectes.

Sincronitzar dues animacions utilitzant una com a conseqüència de la interacció que es produeix a l'altra.

Introducció de la incidència onClipEvent (mouseUp) i la combinació amb el mètode hitTest per detectar si s'ha fet clic en l'objecte o en un espai buit de l'escenari.

Concretant, amb l'aplicació que esteu fent, es tracta que un altre personatge orienti la seva mirada en el mateix sentit que la mascota que en aquest moment es mou.

 
     
 Desenvolupament de la pràctica  
   
» Recupereu l'arxiu infantil3.fla.  
     
  Ara es tracta d'afegir una interfície amb botons que permeti a l'usuari/ària escollir el tipus de velocitat que tindrà la mascota.  
     
 
 
     
      
  »  Creeu un botó i arrossegueu tres instàncies d'aquest a l'escenari. Utilitzeu aquests botons per convertir paraules en botons solament utilitzant les seves instàncies.  
     
Observeu que només s'utilitza un símbol botó i, a sobre de cada instància, s'ubiquen els nombres 1, 2 i 3, que us indiquen al programa el grau de velocitat de la mascota escollida.
                
Ara es tracta de programar cada velocitat.
     
  »  Afegiu a la incidència Load de la instància Programa el codi següent per iniciar la variable que correspon a la velocitat:  
     

onClipEvent (load) {
_root.mussol._visible = false;
_root.esquirol._visible = false;
_root.mussol._x = 1;
_root.mussol._y = 100;
_root.esquirol._x = 1;
_root.esquirol._y = 100;
_root.mascota = "";
_root.v=2;
_root.sentit = 1;
}

 
Afegiu, també, a cada botó les assignacions següents de la variable _root.v
 
Botó 1
Botó 2
Botó 3
on (release) {
_root.v=2;
}
on (release) {
_root.v=5;
}
on (release) {
_root.v=10;
}
 
Ara a la incidència enterFrame de la instància Programa heu d'incloure la modificació del codi necessari per variar la velocitat de la mascota en el moment de la reproducció de la pel·lícula segons el valor de la variable _root.v
 
     
 

onClipEvent (enterFrame) {

if (eval(_root.mascota)._x>400) {
eval(_root.mascota)._x = 1;
}

if (eval(_root.mascota)._x<1) {
eval(_root.mascota)._x = 400;
}

if (_root.sentit == 1) {
eval(_root.mascota)._x += _root.v;

} else {
eval(_root.mascota)._x -= _root.v;

}

}

 
 
  »  Proveu la pel·lícula i comproveu el funcionament de la velocitat.  
     
  Ara afegireu una funcionalitat nova. Es tracta de crear una interacció nova que es produirà quan l'usuari/ària encerti fent clic a la mascota. En aquest cas, una altra mascota es farà visible a l'escenari i, en cas contrari, si ha fet clic a qualsevol altra part, aquesta mascota tindrà una visibilitat amb un efecte de transparència.  
 
 

» Arrossegueu de la biblioteca una instància nova del clip mussol i anomeneu-la vigilant.

 
     
  »  Afegiu a la instància Programa una incidència nova: mouseUp.  
     
  Aquesta incidència s'executa cada vegada que l'usuari/ària allibera el botó primari del ratolí. Aprofitarem per dir, també, que la incidència mouseDown es produirà quan l'usuari/ària faci clic amb el botó primari, és a dir, mentre estigui pressionat.  
     
  »  Introduïu el codi següent a la incidència mouseUp.  
 

onClipEvent (mouseUp) {

if (eval(_root.mascota).hitTest(_root._xmouse, _root._ymouse, true)) {
_root.vigilant._alpha = 100;
} else {
_root.vigilant._alpha = 10;
}

}

     
  Observeu que esteu utilitzant una acció nova: hitTest. Aquesta acció és un mètode (en termes de programació); com el seu nom indica en anglès, significa verificar (to test) una zona sensible (hit= zona sensible, Test).  
     
En aquest cas, els paràmetres són les coordenades X i Y de la pel·lícula principal del punter del ratolí: _root._xmouse,_root._ymouse. Si us fixeu, aquestes coordenades són propietats de la pel·lícula principal _root.
 
Amb aquest grup d'instruccions, el que esteu fent és assegurar que, quan l'usuari/ària faci clic a l'escenari, s'avaluï només si el punter del ratolí està a sobre de la mascota, és a dir, qualsevol mascota que hagi escollit l'usuari/ària; ja que esteu utilitzant la funció eval(), la qual avalua la instància (mascota) emmagatzemada a la variable.
 
Per finalitzar el programa, afegiu un altra interacció. Ara feu que, segons el sentit del moviment (dreta o esquerra) de la mascota escollida, un altra mascota, la mascota vigilant, orienti la seva mirada en el mateix sentit.
 
»  Afegiu al botó de la mascota que fa el moviment el codi següent:
     

on (release) {
if (_root.sentit==2) {

_root.sentit=1;

eval(_root.mascota)._xscale = (eval(_root.mascota)._xscale)*-1;

_root.vigilant.gotoAndStop(1);

} else {_root.sentit=2;

_root.vigilant.gotoAndStop(4);


eval(_root.mascota)._xscale =(eval(_root.mascota)._xscale)*-1;}


}

 
  Amb aquest codi, el que heu fet és accedir a un marc específic de la instància vigilant segons el valor de la variable _root.sentit s'emmagatzema el valor del sentit del moviment.  
     
  Deseu l'arxiu amb el nom infantil4.fla.