package { import student_ar_PaperBase; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.lights.PointLight3D; import org.papervision3d.core.proto.DisplayObjectContainer3D; import org.papervision3d.events.InteractiveScene3DEvent; //import org.papervision3d.objects.parsers.Collada; import org.papervision3d.render.QuadrantRenderEngine; import org.papervision3d.objects.parsers.DAE; import org.papervision3d.events.FileLoadEvent; //import org.papervision3d.events.*; import org.papervision3d.materials.BitmapFileMaterial; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.Shape; import flash.display.Loader; import flash.display.MovieClip; import flash.ui.Keyboard; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.events.KeyboardEvent; import flash.media.Camera; import flash.media.Video; import flash.utils.ByteArray; import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.filters.GlowFilter; import org.libspark.flartoolkit.core.FLARCode; import org.libspark.flartoolkit.core.param.FLARParam; import org.libspark.flartoolkit.core.raster.rgb.FLARRgbRaster_BitmapData; import org.libspark.flartoolkit.core.transmat.FLARTransMatResult; import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector; import org.libspark.flartoolkit.pv3d.FLARBaseNode; import org.libspark.flartoolkit.pv3d.FLARCamera3D; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.shadematerials.GouraudMaterial; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.materials.shadematerials.FlatShadeMaterial; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.view.BasicView; import org.papervision3d.view.layer.ViewportLayer; [SWF(width="640", height="480", frameRate="30", backgroundColor="#FFFFFF")] public class student_ar_demo extends Sprite { [Embed(source="student-ar-Data-flarlogo.pat", mimeType="application/octet-stream")] private var pattern:Class; [Embed(source="student-ar-Data-camera-para.dat", mimeType="application/octet-stream")] private var params:Class; private var fparams:FLARParam; private var mpattern:FLARCode; private var vid:Video; private var cam:Camera; private var bmd:BitmapData; private var raster:FLARRgbRaster_BitmapData; private var detector:FLARSingleMarkerDetector; private var scene:Scene3D; private var camera:FLARCamera3D; private var container:FLARBaseNode; private var vp:Viewport3D; private var bre:BasicRenderEngine; private var trans:FLARTransMatResult; private var matList:MaterialsList; private var _loader:URLLoader; private var myDate:Date; private var strCurDate:String = ""; private var dayText; private var dateText; private var monthText; private var boolTrack:Boolean = true; private var _linksList:XML; private var overijssel:DAE; private var zeeland:DAE; private var noordbrabant:DAE; private var limburg:DAE; private var zuidholland:DAE; private var gelderland:DAE; private var utrecht:DAE; private var noordholland:DAE; private var flevoland:DAE; private var friesland:DAE; private var groningen:DAE; private var drenthe:DAE; private var color1:ColorMaterial = new ColorMaterial(0x8D073A,1,true); private var color2:ColorMaterial = new ColorMaterial(0xE4B899,1,true); private var color3:ColorMaterial = new ColorMaterial(0xE39999,1,true); private var color4:ColorMaterial = new ColorMaterial(0xE1578F,1,true); private var color5:ColorMaterial = new ColorMaterial(0x99E4D6,1,true); private var color6:ColorMaterial = new ColorMaterial(0x000000,1,true); private var color7:ColorMaterial = new ColorMaterial(0x1C1CB1,1,true); private var color8:ColorMaterial = new ColorMaterial(0xFFFFFF,1,true); private var color9:ColorMaterial = new ColorMaterial(0x551CB1,1,true); private var color10:ColorMaterial = new ColorMaterial(0x99E499,1,true); private var color11:ColorMaterial = new ColorMaterial(0x876E08,1,true); private var color12:ColorMaterial = new ColorMaterial(0x1BB11B,1,true); private var swfLoader:Loader; private var rssOverijssel:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL009|ZWOLLE"; private var rssZeeland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL012|MIDDELBURG"; private var rssNoordBrabant:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL007|DEN BOSCH"; private var rssLimburg:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL006|MAASTRICHT"; private var rssZuidHolland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL012|DEN HAAG"; private var rssGelderland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL004|ARNHEM"; private var rssUtrecht:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL010|UTRECHT"; private var rssNoordHolland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL008|HAARLEM"; private var rssFlevoland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL002|LELYSTAD"; private var rssFriesland:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL003|LEEUWARDEN"; private var rssGroningen:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL005|GRONINGEN"; private var rssDrenthe:String = "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|NL|NL001|ASSEN"; private var i:Number = -1; private var rssArray:Array = new Array(); private var imageArray:Array = new Array(); private var infoArray:Array = new Array(); private var showInfo:student_ar_WeatherInfo = new student_ar_WeatherInfo(); private var loading:student_ar_LoadScreen = new student_ar_LoadScreen(); private var btn_trackON:TrackingOn = new TrackingOn(); private var btn_trackOFF:TrackingOff = new TrackingOff(); //1 Overijssel //2 Zeeland //3 Noord Brabant //4 Limburg //5 Zuid Holland //6 Gelderland //7 Utrecht //8 Noord Holland //9 Flevoland //10 Friesland //11 Groningen //12 Drenthe public function student_ar_demo() { rssArray.push(rssOverijssel, rssZeeland, rssNoordBrabant, rssLimburg, rssZuidHolland, rssGelderland, rssUtrecht, rssNoordHolland, rssFlevoland, rssFriesland, rssGroningen, rssDrenthe); btn_trackON.addEventListener(MouseEvent.CLICK,mouseClick); btn_trackOFF.addEventListener(MouseEvent.CLICK,mouseClick); setCurrentDate(); loadAllRSS(); setupFLAR(); setupCamera(); setupBitmap(); setupPV3D(); addProvinces(); btn_trackON.x = 18; btn_trackON.y = 342; btn_trackOFF.x = 18; btn_trackOFF.y = 342; setupButtons(); addChild(showInfo); swfLoader = new Loader(); swfLoader.y = 120; addChild(swfLoader); //swfLoader.load(new URLRequest("animations/icon_1.swf")); addChild(loading); addEventListener(Event.ENTER_FRAME, loop); } public function mouseClick(event:MouseEvent):void{ if(boolTrack==true) { boolTrack=false; } else { boolTrack=true; } setupButtons(); } private function setCurrentDate():void { myDate = new Date(); /* var sec:Number = myDate.getSeconds(); var min:Number = myDate.getMinutes(); var hour:Number = myDate.getHours(); */ var day:Number = myDate.getDay(); var date:Number = myDate.getDate(); var month:Number = myDate.getMonth(); var year:Number = myDate.getFullYear(); switch(day){ case 0: dayText = "Sunday"; break; case 1: dayText = "Monday"; break; case 2: dayText = "Tuesday"; break; case 3: dayText = "Wednesday"; break; case 4: dayText = "Thursday"; break; case 5: dayText = "Friday"; break; case 6: dayText = "Saturday"; break; default: } if(date == 1 || date == 21 || date == 31) { dateText = date+"st"; } else if(date == 2 || date == 22) { dateText = date+"nd"; } else if(date == 3 || date == 23) { dateText = date+"rd"; } else { dateText = date+"th"; } switch(month){ case 0: monthText = "January"; break; case 1: monthText = "February"; break; case 2: monthText = "March"; break; case 3: monthText = "April"; break; case 4: monthText = "May"; break; case 5: monthText = "June"; break; case 6: monthText = "July"; break; case 7: monthText = "August"; break; case 8: monthText = "September"; break; case 9: monthText = "October"; break; case 10: monthText = "November"; break; case 11: monthText = "December"; break; default: } strCurDate = dayText+", the "+dateText+" of "+monthText; } private function loadAllRSS():void { i++ _loader = new URLLoader; _loader.addEventListener(ProgressEvent.PROGRESS, LoadProgress); _loader.addEventListener(Event.COMPLETE, HandleComplete); if(i < rssArray.length){ _loader.load(new URLRequest(rssArray[i])); //trace(rssArray[i]); }else{ removeChild(loading); } } private function LoadProgress(event:ProgressEvent):void{ loading.LoadingRSS(event.bytesLoaded, event.bytesTotal); } private function HandleComplete(event:Event):void{ _linksList = new XML(event.target.data); var city:String = GetCity(_linksList.channel.title); var highTemp:String = GetHighTemp(_linksList.channel.item[1].description); var lowTemp:String = GetLowTemp(_linksList.channel.item[1].description); var forecastSentence:String = GetForecast(_linksList.channel.item[1].description); infoArray.push([city, highTemp, lowTemp, forecastSentence]); imageArray.push(GetImage(_linksList.channel.item[1].description)); //trace(GetImage(_linksList.channel.item[1].description)); //trace(event.target); loading.UpdateRSS(i+1, rssArray.length); loading._rssPercentage.text = "100%"; loading._rssPercentage.setTextFormat(loading._loadingTextFormat); loadAllRSS(); } private function setupFLAR():void { fparams = new FLARParam(); fparams.loadARParam(new params() as ByteArray); mpattern = new FLARCode(16, 16); mpattern.loadARPatt(new pattern()); } private function setupCamera():void { vid = new Video(640, 480); cam = Camera.getCamera(); cam.setMode(640, 480, 30); vid.attachCamera(cam); addChild(vid); } private function setupBitmap():void { bmd = new BitmapData(640, 480); bmd.draw(vid); raster = new FLARRgbRaster_BitmapData(bmd); detector = new FLARSingleMarkerDetector(fparams, mpattern, 80); } private function setupButtons():void { addChild(btn_trackOFF); if(boolTrack==true) { removeChild(btn_trackOFF); addChild(btn_trackON); } else { removeChild(btn_trackON); addChild(btn_trackOFF); } } //add provinces to the container private function addProvinces():void { //add collada models to container container.addChild(overijssel); trace("MODEL 1 LOADED"); //add collada models to container container.addChild(zeeland); trace("MODEL 2 LOADED"); //add collada models to container container.addChild(noordbrabant); trace("MODEL 3 LOADED"); //add collada models to container container.addChild(limburg); trace("MODEL 4 LOADED"); //add collada models to container container.addChild(zuidholland); trace("MODEL 5 LOADED"); //add collada models to container container.addChild(gelderland); trace("MODEL 6 LOADED"); //add collada models to container container.addChild(utrecht); trace("MODEL 7 LOADED"); //add collada models to container container.addChild(noordholland); trace("MODEL 8 LOADED"); //add collada models to container container.addChild(flevoland); trace("MODEL 9 LOADED"); //add collada models to container container.addChild(friesland); trace("MODEL 10 LOADED"); //add collada models to container container.addChild(groningen); trace("MODEL 11 LOADED"); //add collada models to container container.addChild(drenthe); trace("MODEL 12 LOADED"); } //set imported collada object size and rotation values private function setupModelProperties():void { overijssel.scale = 0.3; overijssel.rotationX-=90; overijssel.rotationY+=180; zeeland.scale = 0.3; zeeland.rotationX-=90; zeeland.rotationY+=180; noordbrabant.scale = 0.3; noordbrabant.rotationX-=90; noordbrabant.rotationY+=180; limburg.scale = 0.3; limburg.rotationX-=90; limburg.rotationY+=180; zuidholland.scale = 0.3; zuidholland.rotationX-=90; zuidholland.rotationY+=180; gelderland.scale = 0.3; gelderland.rotationX-=90; gelderland.rotationY+=180; utrecht.scale = 0.3; utrecht.rotationX-=90; utrecht.rotationY+=180; noordholland.scale = 0.3; noordholland.rotationX-=90; noordholland.rotationY+=180; flevoland.scale = 0.3; flevoland.rotationX-=90; flevoland.rotationY+=180; friesland.scale = 0.3; friesland.rotationX-=90; friesland.rotationY+=180; groningen.scale = 0.3; groningen.rotationX-=90; groningen.rotationY+=180; drenthe.scale = 0.3; drenthe.rotationX-=90; drenthe.rotationY+=180; //Positioning overijssel.z += 50; overijssel.y = 2; zeeland.z += 50; zeeland.y = 2; noordbrabant.z += 50; noordbrabant.y = 2; limburg.z += 50; limburg.y = 2; zuidholland.z += 50; zuidholland.y = 2; gelderland.z += 50; gelderland.y = 2; utrecht.z += 50; utrecht.y = 2; noordholland.z += 50; noordholland.y = 2; flevoland.z += 50; flevoland.y = 2; friesland.z += 50; friesland.y = 2; groningen.z += 50; groningen.y = 2; drenthe.z += 50; drenthe.y = 2; } private function setupPV3D():void { scene = new Scene3D(); camera = new FLARCamera3D(fparams); container = new FLARBaseNode(); scene.addChild(container); var pl:PointLight3D = new PointLight3D(); pl.x = 1000; pl.y = 1000; pl.z = -1000; overijssel = new DAE(); zeeland = new DAE(); noordbrabant = new DAE(); limburg = new DAE(); zuidholland = new DAE(); gelderland = new DAE(); utrecht = new DAE(); noordholland = new DAE(); flevoland = new DAE(); friesland = new DAE(); groningen = new DAE(); drenthe = new DAE(); //set imported collada object size and rotation values setupModelProperties(); overijssel.load("student-ar-Data-overijssel.DAE"); overijssel.useMaterialTargetName = true; zeeland.load("student-ar-Data-zeeland.DAE"); zeeland.useMaterialTargetName = true; noordbrabant.load("student-ar-Data-noordbrabant.DAE"); noordbrabant.useMaterialTargetName = true; limburg.load("student-ar-Data-limburg.DAE"); limburg.useMaterialTargetName = true; zuidholland.load("student-ar-Data-zuidholland.DAE"); zuidholland.useMaterialTargetName = true; gelderland.load("student-ar-Data-gelderland.DAE"); gelderland.useMaterialTargetName = true; utrecht.load("student-ar-Data-utrecht.DAE"); utrecht.useMaterialTargetName = true; noordholland.load("student-ar-Data-noordholland.DAE"); noordholland.useMaterialTargetName = true; flevoland.load("student-ar-Data-flevoland.DAE"); flevoland.useMaterialTargetName = true; friesland.load("student-ar-Data-friesland.DAE"); friesland.useMaterialTargetName = true; groningen.load("student-ar-Data-groningen.DAE"); groningen.useMaterialTargetName = true; drenthe.load("student-ar-Data-drenthe.DAE"); drenthe.useMaterialTargetName = true; //add event listeners to collada objects overijssel.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada1Loaded); overijssel.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); zeeland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada2Loaded); zeeland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); noordbrabant.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada3Loaded); noordbrabant.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); limburg.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada4Loaded); limburg.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); zuidholland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada5Loaded); zuidholland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); gelderland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada6Loaded); gelderland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); utrecht.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada7Loaded); utrecht.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); noordholland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada8Loaded); noordholland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); flevoland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada9Loaded); flevoland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); friesland.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada10Loaded); friesland.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); groningen.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada11Loaded); groningen.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); drenthe.addEventListener(FileLoadEvent.LOAD_COMPLETE, collada12Loaded); drenthe.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, matsLoaded); //add 3D objects to container bre = new BasicRenderEngine(); trans = new FLARTransMatResult(); vp = new Viewport3D(); vp.interactive = true; addChild(vp); } public function collada1Loaded(ev:FileLoadEvent):void { //1 Overijssel //2 Zeeland //3 Noord Brabant //4 Limburg //5 Zuid Holland //6 Gelderland //7 Utrecht //8 Noord Holland //9 Flevoland //10 Friesland //11 Groningen //12 Drenthe overijssel.replaceMaterialByName(color1, 'ColorMaterial_1BB11B00'); var overijsselDO3D:DisplayObject3D = overijssel.getChildByName("Overijsel", true); var overijsselLayer:ViewportLayer = vp.containerSprite.getChildLayer(overijsselDO3D, true, true); overijsselLayer.name = "Overijssel"; overijsselLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); overijsselLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada2Loaded(ev:FileLoadEvent):void { //2 Zeeland zeeland.replaceMaterialByName(color2, 'ColorMaterial_876E0800'); var zeelandDO3D:DisplayObject3D = zeeland.getChildByName("Zeeland", true); var zeelandLayer:ViewportLayer = vp.containerSprite.getChildLayer(zeelandDO3D, true, true); zeelandLayer.name = "Zeeland"; zeelandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); zeelandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada3Loaded(ev:FileLoadEvent):void { //3 Noord Brabant noordbrabant.replaceMaterialByName(color3, 'ColorMaterial_99E49900'); var noordbrabantDO3D:DisplayObject3D = noordbrabant.getChildByName("NoordBrabant", true); var noordbrabantLayer:ViewportLayer = vp.containerSprite.getChildLayer(noordbrabantDO3D, true, true); noordbrabantLayer.name = "NoordBrabant"; noordbrabantLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); noordbrabantLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada4Loaded(ev:FileLoadEvent):void { //4 Limburg limburg.replaceMaterialByName(color4, 'ColorMaterial_551CB100'); var limburgDO3D:DisplayObject3D = limburg.getChildByName("Limburg", true); var limburgLayer:ViewportLayer = vp.containerSprite.getChildLayer(limburgDO3D, true, true); limburgLayer.name = "Limburg"; limburgLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); limburgLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada5Loaded(ev:FileLoadEvent):void { //5 Zuid Holland zuidholland.replaceMaterialByName(color5, 'ColorMaterial_FFFFFF00'); var zuidhollandDO3D:DisplayObject3D = zuidholland.getChildByName("ZuidHolland", true); var zuidhollandLayer:ViewportLayer = vp.containerSprite.getChildLayer(zuidhollandDO3D, true, true); zuidhollandLayer.name = "ZuidHolland"; zuidhollandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); zuidhollandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada6Loaded(ev:FileLoadEvent):void { //6 Gelderland gelderland.replaceMaterialByName(color6, 'ColorMaterial_1C1CB100'); var gelderlandDO3D:DisplayObject3D = gelderland.getChildByName("Gelderland", true); var gelderlandLayer:ViewportLayer = vp.containerSprite.getChildLayer(gelderlandDO3D, true, true); gelderlandLayer.name = "Gelderland"; gelderlandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); gelderlandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada7Loaded(ev:FileLoadEvent):void { //7 Utrecht utrecht.replaceMaterialByName(color7, 'ColorMaterial_00000000'); var utrechtDO3D:DisplayObject3D = utrecht.getChildByName("Utrecht", true); var utrechtLayer:ViewportLayer = vp.containerSprite.getChildLayer(utrechtDO3D, true, true); utrechtLayer.name = "Utrecht"; utrechtLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); utrechtLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada8Loaded(ev:FileLoadEvent):void { //8 Noord Holland noordholland.replaceMaterialByName(color8, 'ColorMaterial_99E4D600'); var noordhollandDO3D:DisplayObject3D = noordholland.getChildByName("NoordHolland", true); var noordhollandLayer:ViewportLayer = vp.containerSprite.getChildLayer(noordhollandDO3D, true, true); noordhollandLayer.name = "NoordHolland"; noordhollandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); noordhollandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada9Loaded(ev:FileLoadEvent):void { //9 Flevoland flevoland.replaceMaterialByName(color9, 'ColorMaterial_E1578F00'); var flevolandDO3D:DisplayObject3D = flevoland.getChildByName("Flevoland", true); var flevolandLayer:ViewportLayer = vp.containerSprite.getChildLayer(flevolandDO3D, true, true); flevolandLayer.name = "Flevoland"; flevolandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); flevolandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada10Loaded(ev:FileLoadEvent):void { //10 Friesland friesland.replaceMaterialByName(color10, 'ColorMaterial_E3999900'); var frieslandDO3D:DisplayObject3D = friesland.getChildByName("Friesland", true); var frieslandLayer:ViewportLayer = vp.containerSprite.getChildLayer(frieslandDO3D, true, true); frieslandLayer.name = "Friesland"; frieslandLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); frieslandLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada11Loaded(ev:FileLoadEvent):void { //11 Groningen groningen.replaceMaterialByName(color11, 'ColorMaterial_E4B89900'); var groningenDO3D:DisplayObject3D = groningen.getChildByName("Groningen", true); var groningenLayer:ViewportLayer = vp.containerSprite.getChildLayer(groningenDO3D, true, true); groningenLayer.name = "Groningen"; groningenLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); groningenLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); } public function collada12Loaded(ev:FileLoadEvent):void { //12 Drenthe drenthe.replaceMaterialByName(color12, 'ColorMaterial_8D073A00'); var drentheDO3D:DisplayObject3D = drenthe.getChildByName("Drenthe", true); var drentheLayer:ViewportLayer = vp.containerSprite.getChildLayer(drentheDO3D, true, true); drentheLayer.name = "Drenthe"; drentheLayer.addEventListener(MouseEvent.MOUSE_OVER, MouseOverHandler); drentheLayer.addEventListener(MouseEvent.MOUSE_OUT, MouseOutHandler); //trace(drentheDO3D); } protected function MouseOverHandler(event:MouseEvent):void { //1 Overijssel //2 Zeeland //3 Noord Brabant //4 Limburg //5 Zuid Holland //6 Gelderland //7 Utrecht //8 Noord Holland //9 Flevoland //10 Friesland //11 Groningen //12 Drenthe event.currentTarget.filters = [new GlowFilter(0x009900, 1, 6, 6, 2, 5)]; switch(event.currentTarget.name){ case "Overijssel": WeatherAnimation(imageArray[0]); showInfo.ChangeInfo(infoArray[0][0], infoArray[0][1], infoArray[0][2], infoArray[0][3]); break; case "Zeeland": WeatherAnimation(imageArray[1]); showInfo.ChangeInfo(infoArray[1][0], infoArray[1][1], infoArray[1][2], infoArray[1][3]); break; case "NoordBrabant": WeatherAnimation(imageArray[2]); showInfo.ChangeInfo(infoArray[2][0], infoArray[2][1], infoArray[2][2], infoArray[2][3]); break; case "Limburg": WeatherAnimation(imageArray[3]); showInfo.ChangeInfo(infoArray[3][0], infoArray[3][1], infoArray[3][2], infoArray[3][3]); break; case "ZuidHolland": WeatherAnimation(imageArray[4]); showInfo.ChangeInfo(infoArray[4][0], infoArray[4][1], infoArray[4][2], infoArray[4][3]); break; case "Gelderland": WeatherAnimation(imageArray[5]); showInfo.ChangeInfo(infoArray[5][0], infoArray[5][1], infoArray[5][2], infoArray[5][3]); break; case "Utrecht": WeatherAnimation(imageArray[6]); showInfo.ChangeInfo(infoArray[6][0], infoArray[6][1], infoArray[6][2], infoArray[6][3]); break; case "NoordHolland": //setInfoText(item8Str); WeatherAnimation(imageArray[7]); showInfo.ChangeInfo(infoArray[7][0], infoArray[7][1], infoArray[7][2], infoArray[7][3]); break; case "Flevoland": WeatherAnimation(imageArray[8]); showInfo.ChangeInfo(infoArray[8][0], infoArray[8][1], infoArray[8][2], infoArray[8][3]); break; case "Friesland": WeatherAnimation(imageArray[9]); showInfo.ChangeInfo(infoArray[9][0], infoArray[9][1], infoArray[9][2], infoArray[9][3]); break; case "Groningen": WeatherAnimation(imageArray[10]); showInfo.ChangeInfo(infoArray[10][0], infoArray[10][1], infoArray[10][2], infoArray[10][3]); break; case "Drenthe": WeatherAnimation(imageArray[11]); showInfo.ChangeInfo(infoArray[11][0], infoArray[11][1], infoArray[11][2], infoArray[11][3]); break; default: } //trace(event.currentTarget.name); } protected function MouseOutHandler(event:MouseEvent):void { event.currentTarget.filters = []; swfLoader.unload(); showInfo.ChangeInfo("-", "-", "-", "-"); } public function matsLoaded(ev:FileLoadEvent):void { trace("MATS LOADED"); } private function loop(e:Event):void { bmd.draw(vid); try { if(detector.detectMarkerLite(raster, 80) && detector.getConfidence() > 0.5 && boolTrack) { detector.getTransformMatrix(trans); container.setTransformMatrix(trans); bre.renderScene(scene, camera, vp); } } catch(e:Error){} } private function WeatherAnimation(image:String) { switch(image){ case "01": swfLoader.load(new URLRequest("animations/icon_1.swf")); break; case "02": swfLoader.load(new URLRequest("animations/icon_2.swf")); break; case "03": case "04": swfLoader.load(new URLRequest("animations/icon_3.swf")); break; case "06": swfLoader.load(new URLRequest("animations/icon_4.swf")); break; case "05": case "11": swfLoader.load(new URLRequest("animations/icon_6.swf")); break; case "07": swfLoader.load(new URLRequest("animations/icon_7.swf")); break; case "08": swfLoader.load(new URLRequest("animations/icon_11.swf")); break; case "12": swfLoader.load(new URLRequest("animations/icon_12.swf")); break; case "13": swfLoader.load(new URLRequest("animations/icon_13.swf")); break; case "14": swfLoader.load(new URLRequest("animations/icon_14.swf")); break; case "15": swfLoader.load(new URLRequest("animations/icon_15.swf")); break; case "16": case "17": swfLoader.load(new URLRequest("animations/icon_16.swf")); break; case "18": swfLoader.load(new URLRequest("animations/icon_18.swf")); break; case "19": swfLoader.load(new URLRequest("animations/icon_20.swf")); break; case "20": case "21": case "23": swfLoader.load(new URLRequest("animations/icon_21.swf")); break; case "22": swfLoader.load(new URLRequest("animations/icon_22.swf")); break; case "25": swfLoader.load(new URLRequest("animations/icon_23.swf")); break; case "29": swfLoader.load(new URLRequest("animations/icon_25.swf")); break; case "24": swfLoader.load(new URLRequest("animations/icon_26.swf")); break; case "25": case "26": swfLoader.load(new URLRequest("animations/icon_29.swf")); break; case "30": swfLoader.load(new URLRequest("animations/icon_30.swf")); break; case "31": swfLoader.load(new URLRequest("animations/icon_31.swf")); break; case "32": swfLoader.load(new URLRequest("animations/icon_32.swf")); break; case "33": swfLoader.load(new URLRequest("animations/icon_33.swf")); break; case "34": case "37": swfLoader.load(new URLRequest("animations/icon_34.swf")); break; case "35": case "36": case "38": swfLoader.load(new URLRequest("animations/icon_35.swf")); break; case "39": case "40": swfLoader.load(new URLRequest("animations/icon_39.swf")); break; case "41": case "42": swfLoader.load(new URLRequest("animations/icon_42.swf")); break; case "43": case "44": swfLoader.load(new URLRequest("animations/icon_43.swf")); break; default: swfLoader.load(new URLRequest("animations/icon_0.swf")); } } private function GetCity(temp:String):String { var indexCityEnd:int = temp.lastIndexOf(","); var cityLowerCase:String = temp.substring(1, indexCityEnd).toLowerCase(); //trace("This is the city: " + temp.substring(0, 1) + cityLowerCase); return temp.substring(0, 1) + cityLowerCase; } private function GetHighTemp(temp:String):String { var lastIndex:int = temp.length; var spaceArray:Array = new Array();//This array will contain the index of every whitespace in the string while((lastIndex = temp.lastIndexOf(" ", lastIndex - 1)) != -1){ spaceArray.push(lastIndex); //trace("tracing C: " + lastIndex); } //trace("This is the sentence of the highest value: " + temp.substring(indexHigh, cArray[cArray.length-1]+1)); return temp.substring(spaceArray[spaceArray.length-1], spaceArray[spaceArray.length-2]); } private function GetLowTemp(temp:String):String { var lastIndex:int = temp.length; var spaceArray:Array = new Array();//This array will contain the index of every whitespace in the string while((lastIndex = temp.lastIndexOf(" ", lastIndex - 1)) != -1){ spaceArray.push(lastIndex); //trace("tracing C: " + lastIndex); } //trace("This is the sentence of the highest value: " + temp.substring(indexHigh, cArray[cArray.length-1]+1)); return temp.substring(spaceArray[spaceArray.length-4], spaceArray[spaceArray.length-5]); } private function GetForecast(temp:String):String { var indexImage:int = temp.lastIndexOf("<"); var lastIndex:int = temp.length; var cArray:Array = new Array();//This array will contain the index of every capital C in the string while((lastIndex = temp.lastIndexOf("C", lastIndex - 1)) != -1){ cArray.push(lastIndex); //trace("tracing C: " + lastIndex); } //trace("This is the sentence of the highest value: " + temp.substring(indexHigh, cArray[cArray.length-1]+1)); return temp.substring(cArray[cArray.length-2]+1, indexImage); } private function GetImage(temp:String):String { var beginURL:int = temp.lastIndexOf("<") + 1; var endURL:int = temp.lastIndexOf(">"); var urlString:String = temp.substring(beginURL, endURL); return urlString.substring(68, 70); } } }