Tutorial 7 - Control de la línia de temps
Pas 7 de 11
Si premem dues vegades qualsevol dels altres ocells, veurem que ens porta al mateix clip bird original, al qual ja hem donat els noms d'instància wing1_mc i wing2_mc.
Provem d’aturar una ala d'un ocell. Per a això haurem d'afegir la línia de codi següent dins de la funció stopMovie
:
bird1_mc.wing1_mc.stop();
de tal manera que la funció stopMovie
quedi com s’indica a continuació:
function stopMovie(e:MouseEvent):void
{
stop();
play_btn.visible = true;
pause_btn.visible = false;
bird1_mc.wing1_mc.stop();
}
Provem la pel·lícula i premem el botó pause_btn. L'ala esquerra del primer ocell s’aturarà alhora que la línia de temps principal. Encara que reprenguem la pel·lícula, aquesta ala no tornarà a reproduir-se, ja que no hem escrit instruccions per a això.
Abans de continuar, provem de substituir en la programació bird1_mc
per bird3_mc
, amb la qual cosa, la línia queda com s’indica a continuació:
bird3_mc.wing1_mc.stop();
Si tornem a provar la pel·lícula, i premem el botó pause_btn abans que l'ocell 3 aparegui en escena, hi haurà l’error següent:
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at tutorial7_fla::MainTimeline/detener()
Això vol dir que, en prémer el botó per a aturar la pel·lícula i executarse la funció stopMovie
, es fa referència a un objecte que no existeix en aquell moment (bird3_mc
en aquest cas), i per tant no pot executar la instrucció d’aturar l'ala d'aquest ocell.
Malgrat que això no impedeix el funcionament correcte de la nostra pel·lícula, per evitar aquest error comprovarem quins ocells són en l'escenari en el moment de prémer els botons, i només executarem les instruccions per aturar les ales d'aquests ocells.