import com.themakers.SlideModel; import com.themakers.CDSlide; import com.themakers.SlideView; import mx.utils.Delegate; class com.themakers.CDVideoSlide extends CDSlide { private var name:TextField; private var title:TextField; private var slideData:Object; private var model:SlideModel; private var view:SlideView; private var btNext:Button; private var btPrev:Button; private var aExtUI:Array; private var cmp:mx.controls.MediaPlayback; private var cbt:mx.controls.Button; private var nStartWidth:Number; private var nStartHeight:Number; private var nStartX:Number; private var nStartY:Number; private var nButtonStartX:Number; private var nButtonStartY:Number; private var sButtonLabel_normal:String; private var sButtonLabel_full:String; private var bVideoFull:Boolean; private var sVideoStatus:String; private var sPath:String; function CDVideoSlide(){ init(); } private function init():Void { _lockroot = true; sPath = _global.assetPath != undefined ? _global.assetPath : ""; nStartWidth = 340; nStartHeight = 300; nStartX = 225; nStartY = 160; bVideoFull = false; sVideoStatus = "VIDEO TITLE"; nButtonStartX = 345; nButtonStartY = 430; sButtonLabel_normal = model.getLabel("video_normal_button"); sButtonLabel_full = model.getLabel("video_full_button"); buildNav(); var oLesson:Object = model.getLessonData(model.lessonIndex); createFields([name, title], oLesson); //cmp.onLoad = Delegate.create(this, this.initVideo); initVideo(); // find active UI elements outside of slide var extUI:Array = view.uiElements; aExtUI = new Array(); for(var i in extUI){ if(extUI[i]._visible) aExtUI.push(extUI[i]); } } private function buildNav():Void { btNext.onRelease = Delegate.create(this, this.onForward); btPrev.onRelease = Delegate.create(this, this.onBack); } private function onForward(Void): Void { trace(" >proceed> "); model.selectedIndex++; } private function onBack(Void):Void { trace(" > go back >"); model.selectedIndex--; } private function initVideo():Void { trace("> initVideo >"); trace("\tvideo.url: " + slideData.video.url); attachMovie("MediaPlayback", "cmp", 10, {_x: nStartX, _y: nStartY, autoPlay: true, contentPath: sPath + slideData.video.url, controllerPolicy: "on" }); //var mc:MovieClip = createEmptyMovieClip("cmpH", 10); //var mcl:MovieClipLoader = new MovieClipLoader(); attachMovie("Button", "cbt", 11, {_x: nButtonStartX, _y: nButtonStartY}); //Button styling cbt.setStyle("embedFonts", true); cbt.setStyle("fontFamily", model.getStyleFormat("sys").font); cbt.setStyle("fontSize", 12); cbt.label = sButtonLabel_full; cbt.addEventListener("click", Delegate.create(this, this.onFullScreenClick)); // MediaPlayer formatting cmp.setSize(nStartWidth, nStartHeight); initVideoLabels(); cmp.addEventListener("draw", Delegate.create(this, this.onFullScreen)); cmp.addEventListener("complete", Delegate.create(this, this.onVideoComplete)); } private function onVideoComplete(oEvent:Object):Void { trace("> onVideoComplete >"); if(bVideoFull){ onFullScreenClick(); } } private function initVideoLabels(){ var oLabels:Object = cmp["_controller"]._strings; oLabels.paused = model.getLabel("video_paused_label"); oLabels.streaming = model.getLabel("video_playing_label"); // Create proxy text field for status display var mc:MovieClip = cmp["_controller"]._playBar; var tStat:TextField = mc._statusTextField; mc.createTextField("tField", 100, Math.round(tStat._x), Math.round(tStat._y), 200, 25); var t:TextField = mc.tField; mc._statusTextField._visible = false; var tfFormatter:TextFormat = t.getTextFormat(); var tf:TextFormat = model.getStyleFormat("sys"); tfFormatter.font = tf.font; tfFormatter.size = 10; t.setNewTextFormat(tfFormatter); t.embedFonts = true; t.selectable = false; t.autoSize = "left"; t.multiline = false; t.wordWrap = false; mc._statusTextField.watch( "text", onStatusChange, t); } private function onStatusChange(prop, oldVal, newVal, t:TextField):Void { //trace("> onStatusChange > " + prop + ", " + oldVal + ", " + newVal ); t.text = newVal; } private function onFullScreenClick(oEvent:Object):Void { trace("> onFullScreenClick > " + oEvent); bVideoFull = !bVideoFull; if(bVideoFull){ cmp.displayFull(); } else { cmp.displayNormal(); } } private function onFullScreen():Void { Mouse.show(); trace(" > onFullScreen >"); if(cmp.width == Stage.width){ trace("\tas big as stage"); bVideoFull = true; cmp.setSize(800, 600); cmp.move(0, 0); cbt.move(115, 570); cbt.label = sButtonLabel_normal; showSlideUI(false); } else if(cmp.width == nStartWidth){ bVideoFull = false; showSlideUI(true); cbt.move(nButtonStartX, nButtonStartY); cbt.label = sButtonLabel_full; } } private function showSlideUI(bActive:Boolean):Void { name._visible = bActive; title._visible = bActive; for(var i in aExtUI){ aExtUI[i]._visible = bActive; } } }