package { import caurina.transitions.*; import com.flexcomps.utils.CustomEvent; import com.flexcomps.utils.XMLLoaderUtil; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.filters.BlurFilter; import flash.filters.ConvolutionFilter; import flash.filters.GlowFilter; import flash.net.NetStream; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.text.TextField; import flash.utils.Timer; import mx.utils.StringUtil; import org.papervision3d.cameras.*; import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; [SWF(width="800", height="600", backgroundColor="0x000000")] public class student_powerrail_main extends Sprite { /* Viewports */ public var viewport:Viewport3D; /* Rendering engine */ public var renderer:BasicRenderEngine; /* Scenes */ public var scene:Scene3D; /* Cameras */ public var camera:Camera3D; /* PowerRailViews and PowerRailSettings */ public var views:Array = new Array(); public var currentView:student_powerrail_PowerRailView; public var settings:student_powerrail_PowerRailSettings; /* animationList for animated objects */ public var animationList:Array = new Array(); /* Input keys state */ public var upKeyDown:Boolean = false; public var downKeyDown:Boolean = false; /* Debug Textfield for debug information */ public var debugMode:Boolean = true; public var text:TextField; public var filterToggle:Boolean = false; public var myTimer:Timer; public var tourStarted:Boolean; public var tourCounter:Number; /* Constructor */ public function student_powerrail_main() { //Display Debug information on top left side of screen if enabled: debugDisplay(); myTimer = new Timer(1000); // 1 second myTimer.addEventListener(TimerEvent.TIMER, tick); myTimer.start(); init(); } /* Debug display displays information used for debugging */ public function debugDisplay():void { text = new TextField(); text.width = 500; text.addEventListener(MouseEvent.CLICK, startTour); addChild(text); } public function startTour(evt:MouseEvent):void { //trace(">> " + currentView.tourTimeout); this.tourCounter = currentView.tourTimeout as Number; tourStarted = true; } public function tick(event:TimerEvent):void { if(tourStarted && settings.guidedTour) { if (tourCounter==0) { goToNext(); } else { tourCounter = tourCounter - 1; } } //trace(tourStarted + "-" + settings.guidedTour + "-" + tourCounter);// + "-" + getTimer()); } public function init(vpWidth:Number = 800, vpHeight:Number = 600):void { initPapervision(vpWidth, vpHeight); // Initialise papervision initXML(); // Initialise XML parsing } public function initPapervision(vpWidth:Number, vpHeight:Number):void { viewport = new Viewport3D(vpWidth, vpHeight,false,true); addChild(viewport); /* //Working glowfilter for all objects in viewport (this. refers to viewport) var glow:GlowFilter = new GlowFilter; glow.color = 0x9c9c9c; glow.blurX = 17; glow.blurY = 17; this.filters = [glow]; */ renderer = new BasicRenderEngine(); scene = new Scene3D(); camera = new Camera3D(); } /* Initialise the XML loader and load the PowerRail XML file from the assets folder */ public function initXML():void { var xmlLoader:XMLLoaderUtil = new XMLLoaderUtil(); xmlLoader.addEventListener(CustomEvent.ONLOADED, onXMLLoaded); // xmlLoader.load("assets/powerrail_presentatie.xml"); xmlLoader.load("student-powerrail-ae.xml"); } /* Handles the XML after loading */ public function onXMLLoaded(evt:CustomEvent):void { var xmlData:XML = evt.data as XML; settings = new student_powerrail_PowerRailSettings(xmlData.children()[0]); //load settings var viewsList:XMLList = xmlData.views.children(); //load views for (var i:uint=0; i < viewsList.length(); i++) { var view:student_powerrail_PowerRailView = new student_powerrail_PowerRailView(viewsList[i]); view.id = i; views.push(view); } /* Load the rest of the init statements after the XML is loaded */ init2d(); // Initialize the interface init3d(); // Initialise 3d objects initEvents(); // Set up the event listeners } /* This function creates 2d items layered on top of the papervision 3d scene */ public function init2d():void { /* //Brandmarking, moet nog even gefixed worden var brandmark:TextField; brandmark = new TextField; brandmark.text = "PowerRail ©2008" brandmark.setTextFormat(new TextFormat("Arial", xml.attribute("fontsize"), 0xFFFFFF,false,false,false,"http://www.power-rail.net/")); brandmark.x = 700; brandmark.y = 0; scene.addChild(brandmark)*/ } /* This function sets up the papervision 3d stage */ public function init3d():void { /* Add all the objects listed in the XML to the scene and views list */ for (var i:uint = 0 ; i0) { stopVideos(currentView); currentView = views[currentView.id - 1]; startVideos(currentView); tourCounter = currentView.tourTimeout; } /* DEBUG: display the current view name in debug information */ if (debugMode) { text.text = currentView.name; } //} } /* This function searches the viewlist and returns the object corresponding with the given name */ public function getView(needle:String):student_powerrail_PowerRailView { for (var i:uint = 0 ; i