root/trunk/as2/com/jeroenwijering/players/AudioView.as @ 1

Revision 1, 2.6 kB (checked in by jeroen, 18 months ago)

initial commit of old repository into public one

  • Property svn:executable set to *
Line 
1/**
2* Extra audiotrack management of the players MCV pattern.
3*
4* @author       Jeroen Wijering
5* @version      1.1
6**/
7
8
9import com.jeroenwijering.players.*;
10
11class com.jeroenwijering.players.AudioView extends AbstractView {
12
13
14        /** The MovieClip to which the sounds will be attached **/
15        private var audioClip:MovieClip;
16        /** The Sound object we'll use**/
17        private var audioObject:Sound;
18        /** Currently active feeditem **/
19        private var currentItem:Number;
20        /** The current elapsed time **/
21        private var currentTime:Number = 0;
22        /** The last stop position **/
23        private var stopTime:Number;
24        /** The current audio time **/
25        private var audioTime:Number;
26        /** Save the current state **/
27        private var currentState:Number;
28        /** Check whether an MP3 file is loaded **/
29        private var isLoaded:String;
30        /** Sync the audio with emtry or not **/
31        private var sync:Boolean;
32
33
34        /** Constructor, loads caption file. **/
35        function AudioView(ctr:AbstractController,cfg:Object,fed:Object,
36                snc:Boolean) {
37                super(ctr,cfg,fed);
38                sync = snc;
39                var ref = this;
40                audioClip = config['clip'].createEmptyMovieClip('audio',
41                        config['clip'].getNextHighestDepth());
42                audioClip.setStart = function() {
43                        if(ref.stopTime == undefined && ref.sync == false) {
44                                ref.audioObject.loadSound(ref.feeder.feed[0]['audio'],true);
45                                ref.audioObject.setVolume(Number(ref.config['volume']));
46                                ref.audioObject.start(0);
47                        } else if (ref.sync == false) {
48                                ref.audioObject.start(ref.stopTime);
49                        } else if(ref.currentState == 2) {
50                                ref.audioObject.start(ref.currentTime);
51                        }
52                };
53                audioClip.setStop = function() {
54                        ref.audioObject.stop();
55                        ref.stopTime = ref.audioObject.position/1000;
56                };
57                audioObject = new Sound (audioClip);
58                if(config['useaudio'] == "true" && sync == false) {
59                        audioClip.setStart();
60                }
61                if(sync == false) {
62                        audioObject.onSoundComplete = function() {
63                                this.start();
64                        };
65                }
66        };
67
68
69        private function setItem(idx:Number) {
70                currentItem = idx;
71        };
72
73
74        private function setState(stt:Number) {
75                currentState = stt;
76                if(sync == false) { return; }
77                if(stt == 2 && config['useaudio'] == "true") {
78                        audioObject.start(currentTime);
79                } else {
80                        audioObject.stop();
81                }
82        };
83
84
85        private function setTime(elp:Number,rem:Number) {
86                if(sync == false) { return; }
87                if(Math.abs(elp-currentTime) > 1) {
88                        currentTime = elp;
89                        audioTime = audioObject.position/1000;
90                        if(Math.abs(currentTime - audioTime) > 1 &&
91                                config['useaudio'] == "true") {
92                                audioObject.start(currentTime);
93                        }
94                }
95                if (isLoaded != feeder.feed[currentItem]['audio']) {
96                        isLoaded = feeder.feed[currentItem]['audio'];
97                        audioObject.loadSound(isLoaded,true);
98                        audioObject.setVolume(Number(config['volume']));
99                }
100        };
101
102
103}
Note: See TracBrowser for help on using the browser.