From 4acdc4cd6db3a2e7eb4879b8b5aa780083a743b3 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Tue, 3 May 2011 23:01:19 -0700 Subject: [PATCH] simple player for gamediscs --- src/GamePlayer.as | 51 +++++++++++++++++++++++++++++++++++++++++++++++ src/Main.as | 37 +++++++++++++++++++++++++++++++--- 2 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 src/GamePlayer.as diff --git a/src/GamePlayer.as b/src/GamePlayer.as new file mode 100644 index 0000000..60b5290 --- /dev/null +++ b/src/GamePlayer.as @@ -0,0 +1,51 @@ +package +{ + import flash.display.Sprite; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.Point; + /** + * ... + * @author jjp + */ + public class GamePlayer extends Sprite + { + private var videotube:Videotube; + private var gamedisc:Gamedisc; + private var clickarea:ClickArea; + public function GamePlayer(videotube:Videotube, gamedisc:Gamedisc) + { + this.videotube = videotube; + this.gamedisc = gamedisc; + clickarea = null; + addEventListener(Event.ADDED_TO_STAGE, init); + } + private function init(e:Event):void + { + removeEventListener(Event.ADDED_TO_STAGE, init); + addEventListener(Event.REMOVED_FROM_STAGE, cleanup); + stage.addEventListener(MouseEvent.CLICK, onClick); + videotube.addEventListener(EventQte.QTE, onQte); + } + private function cleanup(e:Event):void + { + removeEventListener(Event.REMOVED_FROM_STAGE, cleanup); + stage.removeEventListener(MouseEvent.CLICK, onClick); + videotube.removeEventListener(EventQte.QTE, onQte); + } + private function onQte(e:EventQte):void + { + clickarea = new ClickArea(e.qte.rgpoint, 0xffff00, 0.7); + addChild(clickarea); + } + private function onClick(mouse:MouseEvent):void + { + if (clickarea != null && clickarea.FHit(new Point(mouse.stageX, mouse.stageY))) + { + removeChild(clickarea); + clickarea = null; + } + } + } + +} \ No newline at end of file diff --git a/src/Main.as b/src/Main.as index dac4d19..8efaa23 100644 --- a/src/Main.as +++ b/src/Main.as @@ -2,8 +2,10 @@ package { import flash.display.Sprite; import flash.events.Event; + import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.geom.Point; + import flash.ui.Keyboard; /** * ... @@ -14,6 +16,7 @@ package private var videotube:Videotube; private var gamedisc:Gamedisc; private var gameeditor:GameEditor; + private var gameplayer:GamePlayer; public function Main():void { @@ -27,10 +30,38 @@ package { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point - gameeditor = new GameEditor(videotube, gamedisc); addChild(videotube); - addChild(gameeditor); - videotube.stream.play(gamedisc.urlVideo); + toggleGame(); + stage.addEventListener(KeyboardEvent.KEY_UP, onKey); + videotube.play(); + } + private function toggleGame():void + { + if (gameeditor == null) + { + if (gameplayer != null) + { + removeChild(gameplayer); + gameplayer = null; + } + + gameeditor = new GameEditor(videotube, gamedisc); + addChild(gameeditor); + } + else + { + removeChild(gameeditor); + gameeditor = null; + + gameplayer = new GamePlayer(videotube, gamedisc); + addChild(gameplayer); + } + videotube.stream.seek(0); + } + private function onKey(key:KeyboardEvent):void + { + if (key.keyCode == Keyboard.SPACE) + toggleGame(); } } } \ No newline at end of file