ActionScript 3.0 Design Patterns

(Chris Devlin) #1
Video Player Concrete State Application | 369

Next, the context class shown in Example 10-10 for this design pattern pulls it all


together. Note that there is no import of the NetStream object. However, the listing


clearly shows that the NetSteam object is one of the parameters of both the


startPlay( )andstopPlay( )function parameters. If you look closely, you’ll see that


both the functions to start and stop play are instances of thePlayStateandStopState


classes, which did import the necessaryNetStream class.


Example 10-9. PlayState.as


package
{
//Play State #3
import flash.net.NetStream;


class PlayState implements State
{
private var videoWorks:VideoWorks;
public function PlayState(videoWorks:VideoWorks)
{
trace("--Play State--");
this.videoWorks=videoWorks;
}
public function startPlay(ns:NetStream,flv:String):void
{
trace("You're already playing");
}
public function stopPlay(ns:NetStream):void
{
ns.close( );
trace("Stop playing.");
videoWorks.setState(videoWorks.getStopState( ));
}
}
}


Example 10-10. VideoWorks.as


package
{
import flash.net.NetStream;
//Context Class #4
class VideoWorks
{
private var playState:State;
private var stopState:State;
private var state:State;
public function VideoWorks( )
{
trace("Video Player is on");
playState = new PlayState(this);
stopState = new StopState(this);
state=stopState;
}

Free download pdf