fadeEffect.end(); playProgress.alpha=0.5; playProgress.visible=true; if(!keyPressed){ deltaSeek=Math.max(1,vidDisp.duration/1000); curTime=vidDisp.currentTime; } keyPressed=true; newPos=Math.min(vidDisp.duration-0.1,curTime+deltaSeek); playProgress.setProgress(newPos,vidDisp.duration); playProgress.label=formatTime(newPos); vidDisp.seek(newPos); deltaSeek*=1.1; break; case 38: vol=Math.min(1,vol+0.025); volume(vol); break; case 40: vol=Math.max(0,vol-0.025); volume(vol); break; default: if(e.charCode==109) mute(); //`m' } } private function onKeyUp(e:KeyboardEvent):void { switch(e.keyCode) { case 37: //<-- case 39: //--> deltaSeek=Math.max(1,vidDisp.duration/1000); keyPressed=false; fadeEffect.play(); break; } } private function onCurrentTimeChange(e:Event):void { if(vidDisp.playing&&pauseAtPos>=0&&vidDisp.currentTime=0&& vidDisp.currentTime>=pauseAtPos&&toBePaused ){ pause(); pauseAtPos=-1; toBePaused=false; } } private function play(p:Number=-1):void { if(p>=0) seek(p); if(vidComplete){seek(0);}vidDisp.play(); } private function pause(p:Number=-1):void { if(p>=0){pauseAtPos=p;return;} vidDisp.pause(); } private function playPause():void { if(vidDisp.playing) vidDisp.pause(); else vidDisp.play(); } private function seek(p:Number):void { vidDisp.seek(p); } private function rewind():void { vidDisp.seek(0); } private function volume(v:Number):void { vidDisp.muted=false; vidDisp.volume = v; } private function mute():void { if(vidDisp.muted) { vidDisp.muted=false; if (vidDisp.volume==0) volume(0.75); } else { vidDisp.muted=true; } } private function setSource(s:Object):void { vidDisp.source = s; } private function formatTime(s:Number):String { var hrs:Number = Math.floor(s / 3600); var min:Number = Math.floor(s / 60 % 60); var sec:Number = Math.floor(s % 60); var fmtd:String=''; if (hrs>0) fmtd = String(hrs)+':'; if (hrs>0 && min <10) fmtd+='0'; fmtd += String(min)+':'; if (sec<10) fmtd+='0'; fmtd += String(sec); return fmtd; } private function currentTime():Number { return vidDisp.currentTime; } private function playing():Boolean { return vidDisp.playing; } private function duration():Number { return vidDisp.duration; } private function muted():Boolean { return vidDisp.muted; } private function initApp():void { this.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); this.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); ExternalInterface.addCallback("play", play); ExternalInterface.addCallback("pause", pause); ExternalInterface.addCallback("playPause", playPause); ExternalInterface.addCallback("seek", seek); ExternalInterface.addCallback("rewind", rewind); ExternalInterface.addCallback("volume", volume); ExternalInterface.addCallback("mute", mute); ExternalInterface.addCallback("setSource", setSource); ExternalInterface.addCallback("currentTime", currentTime); ExternalInterface.addCallback("duration", duration); ExternalInterface.addCallback("playing", playing); ExternalInterface.addCallback("muted", muted); var itemPlayPause:ContextMenuItem = new ContextMenuItem("N.N."); this.contextMenu.customItems.push(itemPlayPause); itemPlayPause.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void{playPause();}); var itemRewind:ContextMenuItem = new ContextMenuItem("Rewind, [Home]"); this.contextMenu.customItems.push(itemRewind); itemRewind.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void{vidDisp.pause();vidDisp.seek(0);}); var itemGotoEnd:ContextMenuItem = new ContextMenuItem("Goto End, [End]"); this.contextMenu.customItems.push(itemGotoEnd); itemGotoEnd.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void{vidDisp.pause(); vidDisp.seek(vidDisp.duration-0.1);}); var itemMute:ContextMenuItem = new ContextMenuItem("N.N."); this.contextMenu.customItems.push(itemMute); itemMute.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void{mute();}); this.contextMenu.customItems.push( new ContextMenuItem("via keyboard:", true, false, true)); this.contextMenu.customItems.push( new ContextMenuItem("Seek, [\u2190]/[\u2192]", false, false, true)); this.contextMenu.customItems.push( new ContextMenuItem("Volume, [\u2191]/[\u2193]", false, false, true)); this.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, function(e:ContextMenuEvent):void{ itemPlayPause.caption=(vidDisp.playing ? "Pause" : "Play")+", [Space]"; itemMute.caption=(vidDisp.muted ? "Unmute" : "Mute")+", [m]";} ); } ]]>