diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/media9/files/players/APlayer.mxml')
-rw-r--r-- | Master/texmf-dist/doc/latex/media9/files/players/APlayer.mxml | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/media9/files/players/APlayer.mxml b/Master/texmf-dist/doc/latex/media9/files/players/APlayer.mxml new file mode 100644 index 00000000000..67375fb6a06 --- /dev/null +++ b/Master/texmf-dist/doc/latex/media9/files/players/APlayer.mxml @@ -0,0 +1,143 @@ +<?xml version="1.0"?> +<!-- --> +<!-- Adobe Flex 4 source file of APlayer.swf, --> +<!-- a FlashPlayer-10 compatible component for playing --> +<!-- MP3 audio files and streams. --> +<!-- --> +<!-- version 20120301 --> +<!-- --> +<!-- --> +<!-- The free Adobe Flex 4 SDK is required to compile --> +<!-- this file. Get it from --> +<!-- --> +<!-- http://www.adobe.com/products/flex/ --> +<!-- --> +<!-- and run --> +<!-- --> +<!-- mxmlc -static-link-runtime-shared-libraries APlayer.mxml --> +<!-- --> +<!-- on the command line. --> +<!-- --> +<!-- --> +<!-- Copyright (C) 2012 Alexander Grahn --> +<!-- --> +<!-- This work may be distributed and/or modified under the --> +<!-- conditions of the LaTeX Project Public License, either --> +<!-- version 1.3 of this license or (at your option) any later --> +<!-- version. --> +<!-- --> +<!-- The latest version of this license is in --> +<!-- http://www.latex-project.org/lppl.txt --> +<!-- and version 1.3 or later is part of all distributions of --> +<!-- LaTeX version 2005/12/01 or later. --> +<!-- --> +<!-- This work has the LPPL maintenance status `maintained'. --> +<!-- --> +<!-- The current maintainer of this work is A. Grahn. --> +<!-- --> + +<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" + xmlns:s="library://ns.adobe.com/flex/spark" + xmlns:mx="library://ns.adobe.com/flex/mx" + preinitialize="initialise(FlexGlobals.topLevelApplication.parameters);" + applicationComplete="initSound();addEventListener(Event.ENTER_FRAME, onEnterFrame);" + mouseDown="pause();" + mouseUp="play();" +> + + <fx:Script> + <![CDATA[ + [Bindable] private var source:String; + [Bindable] private var autoPlay:Boolean=false; + [Bindable] private var loop:Boolean=false; + [Bindable] private var volume:Number=0.75; + [Bindable] private var balance:Number=0; + + private var snd:Sound; + private var sndCh:SoundChannel; + private var sndTr:SoundTransform; + private var playResumePosition:Number = 0; + private var playing:Boolean = false; + + import mx.core.FlexGlobals; + private function initialise(flashVars:Object):void{ + source=flashVars.source; + if(flashVars.autoPlay){autoPlay=(flashVars.autoPlay=='true')} + if(flashVars.loop){loop=(flashVars.loop=='true')} + if(flashVars.volume){volume=Number(flashVars.volume)} + if(flashVars.balance){balance=Number(flashVars.balance)} + } + + import mx.controls.Alert; + private function initSound():void + { + snd = new Sound(new URLRequest(source)); + sndTr = new SoundTransform(volume, balance); + + snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); + snd.addEventListener(ProgressEvent.PROGRESS, progressHandler); + snd.addEventListener(Event.COMPLETE, completeHandler); + + if(autoPlay) play(); + } + + private function play():void + { + if (!playing) + { + try{sndCh = snd.play(playResumePosition, 0, sndTr);} + catch(err:Error){Alert.show(err.message,'Error');} + sndCh.addEventListener(Event.SOUND_COMPLETE, sndCompleteHandler); + playing = true; + } + } + + private function pause():void + { + if (playing) + { + playResumePosition = sndCh.position; + sndCh.stop(); + playing = false; + } + } + + private function sndCompleteHandler(event:Event):void + { + playing = false; + playResumePosition = 0; + if(loop) play(); + } + + private function completeHandler(event:Event):void + { + playProgress.indeterminate=false; + } + + import flash.events.ProgressEvent; + private function progressHandler(event:ProgressEvent):void{ + playProgress.indeterminate=true; + if(playing){ + playProgress.setProgress(0.5,1); + } + } + + private function onEnterFrame(event:Event):void{ + if(playProgress.indeterminate==false && playing){ + playProgress.setProgress(sndCh.position,snd.length); + } + } + + import flash.events.IOErrorEvent; + private function errorHandler(errorEvent:IOErrorEvent):void{ + Alert.show(errorEvent.text + '\ncould not be loaded','Error'); + } + + ]]> + </fx:Script> + + <mx:ProgressBar width="100%" mode="manual" + horizontalCenter="0" verticalCenter="0" labelPlacement="center" + label="" id="playProgress" + /> +</s:Application> |