Programació de col·lisions senzilles | ||
|
||
En aquesta pràctica, fareu un petit programa on quatre clips de pel·lícula sortiran a l'atzar a les quatre bandes de l'escenari. Un altre clip de pel·lícula es mourà pel centre de l'escenari controlat pel teclat. Un altre clip de pel·lícula, que en iniciar-la estarà ocult, apareixerà i anirà en línia recta i en l'orientació desitjada a la cerca dels quatre clips de les bandes. Si es produeix la col·lisió, desapareixerà. |
||
Al mateix temps que treballareu aquests objectius, fareu que l'aplicació sigui utilitzable educativament per treballar aspectes relacionats amb la lateralitat, estimació de distàncies... | ||
L'objectiu és que, a partir del programa que es mostra a continuació, poguéssiu fer les modificacions de perfeccionament que se us indica al final d'aquesta pràctica. | ||
Desenvolupament de la pràctica | ||
» Feu clic prèviament al mateix programa i utilitzeu les tecles del cursor i la barra d'espai per observar-ne el funcionament. | ||
|
||
»
Obriu un arxiu nou
de Flash amb les característiques següents:
|
||
|
||
|
||
» Importeu a la pel·lícula les quatre imatges de l'arxiu conills.zip. | ||
» Importeu l'arxiu conill1.jpg. Comprovareu que el Flash ha detectat que hi ha quatre imatges que formen part d'una seqüència i us demana si voleu importar totes les imatges d'una vegada. | ||
» Confirmeu amb el botó Sí i veureu que, en la línia de temps, hi ha quatre fotogrames clau i a cada fotograma hi ha un dels conills. | ||
» Comproveu, també, que les ha inclòs a la biblioteca com a gràfics. | ||
» Esborreu els quatre fotogrames claus que s'han creat. | ||
» Arrossegueu els quatre gràfics de la biblioteca a l'escenari. | ||
» Convertiu cada gràfic en un clip de pel·lícula i assigneu a cada clip el mateix nom precedit de la lletra m (de movieclip). Això es fa perquè el Flash no us deixarà tenir duplicats els noms dels símbols. | ||
» Creeu una instància per a cada símbol amb el mateix nom del símbol: mconill1, mconill2, mconill3, mconill4. | ||
» Feu doble clic sobre el fotograma clau 1 per inserir el codi necessari per adequar les dimensions de les instàncies a la mida adient de l'escenari: | ||
|
||
Ara es tracta que les instàncies se situïn als quatre costats de l'escenari respectivament. Ho fareu amb codi mitjançant la funció random(), tenint en compte que només modificareu una de les coordenades que, en cada cas, correspondrà a la coordenada vertical/horitzontal corresponent. | ||
» Inseriu, a continuació del codi anterior, el següent: | ||
|
||
» Observeu que la primera instància, mconill1, s'ubicarà a la coordenada Y, i recordeu que random() ofereix, en el vostre cas, nombres entre 0 i 300, però si li sumeu 50, deixarà, com a mínim, un marge de 50 píxels per a cada vora de la banda. Evitareu, així, que dues instàncies es col·lisionin a les cantonades (recordeu que les dimensions de l'escenari són 400 x 400 píxels i, en aquest cas, les instàncies quedaran ubicades entre 50 i 50 píxels de les bandes). | ||
» Proveu el funcionament de la pel·lícula i podreu comprovar com, efectivament, posa cada instància en una de les bandes, però només veureu mitja instància. La causa d'aquest problema és que el punt de registre de la instància es troba en el centre d'aquesta instància, i per solucionar aquest problema, podeu fer-ho de dues formes: | ||
|
||
|
||
S'ha escollit aquesta segona opció per creure que, com a programadors, és més interessant, ja que podeu fer servir el codi encara que es canviï el gràfic o la mida. | ||
|
||
Ara, perquè pugueu comprovar les vostres facultats artístiques, dibuixeu una pastanaga (ho podeu fer en la mateixa capa o creant una altra capa) i modifiqueu el seu punt de registre a la part on comencen a sortir les fulles. » Convertiu el dibuix de la pastanaga en clip de pel·lícula i poseu-li com a nom d'instància past1. |
||
Aquesta pastanaga serà la que llançareu a cada conill per poder-lo alimentar i que se'n torni al cau (es faci invisible quan rebi la pastanaga). Realment, el que voleu és que es detecti la col·lisió entre els clips de pel·lícules dels conills i el clip de pel·lícula de la pastanaga. | ||
» Escriviu el codi següent al tauler d'accions de cada clip de pel·lícula corresponent als conills: | ||
|
||
El codi que heu escrit farà que, cada vegada que s'executi el fotograma enterFrame, es comprovi si el clip actual ha col·lisionat amb el clip de pel·lícula pastanaga i, en cas afirmatiu, el fa desaparèixer posant la seva propietat _visible en false (el conill se'n va al seu cau amb la pastanaga). | ||
Observeu que heu utilitzat la paraula clau this en lloc del nom de la instància (_root.mconill1), ja que this es refereix a la ruta relativa de la instància activa. Si canviéssiu el nom de la instància, seguiria funcionant. | ||
» Ara creeu un clip de pel·lícula nou que tingui la funció de llançar les pastanagues als conills i que es pugui controlar amb el teclat. | ||
» Dibuixeu, doncs, una safata o fruiter i doneu-li el nom d'instància mllençar. | ||
» Creeu una incidència onClipEvent (keyDown) a la instància mllençar amb el codi següent: | ||
|
||
A onClipEvent(keyDown) es controla la pulsació de la tecla esquerra, dreta, amunt i avall indicant a la instància mllençar que es mogui en el sentit indicat fent la modificació corresponent de les propietats ._x / ._y. Pareu atenció en modificar el valor de la variable n per poder controlar si la pastanaga haurà de sortir en direcció esquerra (n=1), dreta (n=2), amunt (n=3) o avall (n=4). La tecla amb codi 32 correspon a la tecla de l'espai i aquí és on li assigneu l'acció d'enviar la pastanaga a cercar el conill que voleu que se'n vagi al cau. Us heu de fixar que el que esteu fent quan es premi aquesta tecla, és que la instància de la pastanaga (past1) prengui les coordenades de la instància mllençar, i el motiu és que voleu que surti sempre del punt de registre d'aquesta última instància. També podeu observar que es canvia el contingut de la variable t per indicar que tirareu la pastanaga (t=1) o que no tirareu la pastanaga, i voleu moure la instància mllençar (t=0). Per últim, observeu que, en aquest codi on es controlen les accions de les tecles, aquestes no funcionaran en el cas que la variable t tingui el valor 1. Així, aconseguiu que, mentre estigueu enviant la pastanaga, les tecles romanguin inactives. |
||
En el segon bloc de codi, que correspon a la incidència onClipEvent(enterFrame), controleu el moviment de la pastanaga quan la variable t tingui el valor 1, i que la direcció en què ha de sortir disparada està controlada pel contingut de la variable n. | ||
Controleu, també, que, quan la pastanaga sobrepassi les dimensions corresponents de l'escenari, faci que la variable t canviï el contingut a 0 perquè funcionin altra vegada les tecles i canviï la propietat _visible a false de la instància past1. | ||
Intenteu fer el seguiment acurat d'aquest codi i feu les modificacions que cregueu oportunes per perfeccionar el programa, ja que pot tenir moltes aplicacions educatives amb modificacions mínimes: | ||
|
||
Deseu l'aplicació amb el nom conills1. | ||