Cuando trabajamos con Flash es probable que montemos la película colocando cada pantalla de la aplicación en un fotograma de la linea de tiempo principal, y que vayamos saltando de fotograma a fotograma para cambiar de pantalla.


Código :
package
{
import flash.display.MovieClip;
import com.zguillez.core.TimelineScript;
//--------------------------------------------------------------------------------
public class Main extends MovieClip
{
private var _timelineScript:TimelineScript;
//----------------------------------------------------------------------------
public function Main()
{
_timelineScript = new TimelineScript(this);
_timelineScript.setFrame( 1, new Frame1(this) );
_timelineScript.setFrame( 2, new Frame2(this) );
_timelineScript.setFrame( 3, new Frame3(this) );
/* etc.. */
stop();
}
//----------------------------------------------------------------------------
}
}Código :
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import com.zguillez.core.FrameScript;
//--------------------------------------------------------------------------------
public class Frame1 extends FrameScript
{
//----------------------------------------------------------------------------
public function Frame1(ruta:MovieClip)
{
super(ruta);
}
//----------------------------------------------------------------------------
override protected function actions():void
{
var boton:MovieClip = _ruta.getChildByName("bot1") as MovieClip;
boton.buttonMode = true;
boton.addEventListener(MouseEvent.CLICK, function()
{
gotoFrame(2)
});
/* resto del código para este fotograma */
}
//----------------------------------------------------------------------------
}
}Código :
package com.zguillez.core
{
import flash.display.MovieClip;
import flash.events.Event;
import com.zguillez.core.TimelineScript;
//--------------------------------------------------------------------------------
public class FrameScript
{
protected var _ruta:MovieClip;
private var _timelineScript:TimelineScript;
//----------------------------------------------------------------------------
public function FrameScript(ruta:MovieClip)
{
_ruta = ruta;
}
//----------------------------------------------------------------------------
internal function set timelineScript(t:TimelineScript):void
{
_timelineScript = t;
}
//----------------------------------------------------------------------------
public final function init():void
{
_ruta.stage.addEventListener(Event.ENTER_FRAME, iniActions);
}
//----------------------------------------------------------------------------
private final function iniActions(e:Event):void
{
if (_ruta.numChildren > 0)
{
if (_ruta.getChildAt(0) != null)
{
_ruta.stage.removeEventListener(Event.ENTER_FRAME, iniActions);
actions();
}
}
else
{
_ruta.stage.removeEventListener(Event.ENTER_FRAME, iniActions);
actions();
}
}
//----------------------------------------------------------------------------
protected function actions():void { /* override */ }
//----------------------------------------------------------------------------
protected final function gotoFrame(f:uint):void
{
_ruta.gotoAndStop(f);
_timelineScript.update();
}
//----------------------------------------------------------------------------
}
}Código :
package com.zguillez.core
{
import flash.display.MovieClip;
import com.zguillez.core.FrameScript;
//--------------------------------------------------------------------------------
public class TimelineScript
{
private var _ruta:MovieClip;
private var _frameScript:Array = new Array();
//----------------------------------------------------------------------------
public function TimelineScript(ruta:MovieClip)
{
_ruta = ruta;
initArray();
}
//----------------------------------------------------------------------------
private function initArray():void
{
for (var i:uint = 0; i <= _ruta.totalFrames; i++)
{
_frameScript.push(void);
}
}
//----------------------------------------------------------------------------
public function setFrame(n:uint, s:FrameScript):void
{
s.timelineScript = this;
_frameScript[n] = s;
if (n == _ruta.currentFrame)
{
_frameScript[n].init();
}
}
//----------------------------------------------------------------------------
public function update():void
{
_frameScript[_ruta.currentFrame].init();
}
//----------------------------------------------------------------------------
}
}
eldervaz-blog :