diff --git a/src/flash/FlashMediaElement.as b/src/flash/FlashMediaElement.as index 2fe83aca9..b52bbf14d 100644 --- a/src/flash/FlashMediaElement.as +++ b/src/flash/FlashMediaElement.as @@ -23,7 +23,8 @@ public class FlashMediaElement extends MovieClip { private var _mediaUrl:String; - private var _autoplay:Boolean; // TODO + private var _autoplay:Boolean; + private var _preload:String; private var _debug:Boolean; private var _isVideo:Boolean; private var _video:Video; @@ -77,6 +78,7 @@ _showControls = (params['controls'] != undefined) ? (String(params['controls']) == "true") : false; _enableSmoothing = (params['smoothing'] != undefined) ? (String(params['smoothing']) == "true") : false; _startVolume = (params['startvolume'] != undefined) ? (parseInt(params['startvolume'], 10)) : 1; + _preload = (params['preload'] != undefined) ? params['preload'] : "none"; if (isNaN(_timerRate)) _timerRate = 250; @@ -106,7 +108,7 @@ // create media element if (_isVideo) { - _mediaElement = new VideoElement(this, _autoplay, _timerRate, _startVolume); + _mediaElement = new VideoElement(this, _autoplay, _preload, _timerRate, _startVolume); _video = (_mediaElement as VideoElement).video; _video.width = _stageWidth; _video.height = _stageHeight; @@ -114,7 +116,7 @@ //_video.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO; addChild(_video); } else { - _mediaElement = new AudioElement(this, _autoplay, _timerRate, _startVolume); + _mediaElement = new AudioElement(this, _autoplay, _preload, _timerRate, _startVolume); } // debugging diff --git a/src/flash/htmlelements/AudioElement.as b/src/flash/htmlelements/AudioElement.as index 0588b0428..e1bc5e221 100644 --- a/src/flash/htmlelements/AudioElement.as +++ b/src/flash/htmlelements/AudioElement.as @@ -41,6 +41,7 @@ package htmlelements private var _currentUrl:String = ""; private var _autoplay:Boolean = true; + private var _preload:String = ""; private var _element:FlashMediaElement; private var _timer:Timer; @@ -54,11 +55,12 @@ package htmlelements return _currentTime; } - public function AudioElement(element:FlashMediaElement, autoplay:Boolean, timerRate:Number, startVolume:Number) + public function AudioElement(element:FlashMediaElement, autoplay:Boolean, preload:String, timerRate:Number, startVolume:Number) { _element = element; _autoplay = autoplay; _volume = startVolume; + _preload = preload; _timer = new Timer(timerRate); _timer.addEventListener(TimerEvent.TIMER, timerEventHandler); @@ -157,7 +159,7 @@ package htmlelements _isLoaded = true; - if (!_firedCanPlay) { + if (!_firedCanPlay) { sendEvent(HtmlMediaEvent.LOADEDDATA); sendEvent(HtmlMediaEvent.CANPLAY); _firedCanPlay = true; diff --git a/src/flash/htmlelements/VideoElement.as b/src/flash/htmlelements/VideoElement.as index 43b90deed..fde15ec96 100644 --- a/src/flash/htmlelements/VideoElement.as +++ b/src/flash/htmlelements/VideoElement.as @@ -15,6 +15,7 @@ { private var _currentUrl:String = ""; private var _autoplay:Boolean = true; + private var _preload:String = ""; private var _connection:NetConnection; private var _stream:NetStream; @@ -77,11 +78,12 @@ // _stream gets created - public function VideoElement(element:FlashMediaElement, autoplay:Boolean, timerRate:Number, startVolume:Number) + public function VideoElement(element:FlashMediaElement, autoplay:Boolean, preload:String, timerRate:Number, startVolume:Number) { _element = element; _autoplay = autoplay; _volume = startVolume; + _preload = preload; _video = new Video(); addChild(_video); @@ -164,31 +166,6 @@ } } - private function connectStream():void { - trace("connectStream"); - _stream = new NetStream(_connection); - - // explicitly set the sound since it could have come before the connection was made - _soundTransform = new SoundTransform(_volume); - _stream.soundTransform = _soundTransform; - - _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // same event as connection - _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); - - var customClient:Object = new Object(); - customClient.onMetaData = onMetaDataHandler; - _stream.client = customClient; - - _video.attachNetStream(_stream); - - _isConnected = true; - - if (_playWhenConnected && !_hasStartedPlaying) { - play(); - _playWhenConnected = false; - } - - } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); @@ -217,7 +194,7 @@ public function setSrc(url:String):void { if (_isConnected && _stream) { // stop and restart - _stream.pause(); + _stream.pause(); } _currentUrl = url; @@ -244,6 +221,34 @@ sendEvent(HtmlMediaEvent.LOADSTART); } + + + private function connectStream():void { + trace("connectStream"); + _stream = new NetStream(_connection); + _stream.bufferTime = 10; + + // explicitly set the sound since it could have come before the connection was made + _soundTransform = new SoundTransform(_volume); + _stream.soundTransform = _soundTransform; + + _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // same event as connection + _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); + + var customClient:Object = new Object(); + customClient.onMetaData = onMetaDataHandler; + _stream.client = customClient; + + _video.attachNetStream(_stream); + + _isConnected = true; + + if (_playWhenConnected && !_hasStartedPlaying) { + play(); + _playWhenConnected = false; + } + + } public function play():void {