Changeset 166 for trunk/as3/com/jeroenwijering/models/HTTPModel.as
- Timestamp:
- 02/19/09 10:12:29 (4 years ago)
- File:
-
- 1 edited
-
trunk/as3/com/jeroenwijering/models/HTTPModel.as (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/as3/com/jeroenwijering/models/HTTPModel.as
r162 r166 6 6 7 7 import com.jeroenwijering.events.*; 8 import com.jeroenwijering.models. BasicModel;8 import com.jeroenwijering.models.AbstractModel; 9 9 import com.jeroenwijering.player.Model; 10 10 import com.jeroenwijering.utils.NetClient; … … 16 16 17 17 18 public class HTTPModel extends BasicModel {18 public class HTTPModel extends AbstractModel { 19 19 20 20 … … 27 27 /** Sound control object. **/ 28 28 protected var transform:SoundTransform; 29 /** ID for the position interval. **/ 30 protected var interval:Number; 29 31 /** Interval ID for the loading. **/ 30 32 protected var loadinterval:Number; … … 120 122 /** Load content. **/ 121 123 override public function load(itm:Object):void { 122 super.load(itm);124 item = itm; 123 125 position = timeoffset; 124 126 if(stream.bytesLoaded + byteoffset < stream.bytesTotal) { … … 132 134 clearInterval(loadinterval); 133 135 loadinterval = setInterval(loadHandler,200); 136 model.sendEvent(ModelEvent.BUFFER,{percentage:0}); 134 137 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.BUFFERING}); 135 138 }; … … 187 190 /** Pause playback. **/ 188 191 override public function pause():void { 189 super.pause();190 192 stream.pause(); 193 clearInterval(interval); 194 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PAUSED}); 191 195 }; 192 196 … … 194 198 /** Resume playing. **/ 195 199 override public function play():void { 196 super.play();197 200 stream.resume(); 201 interval = setInterval(positionInterval,100); 202 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PLAYING}); 198 203 }; 199 204 200 205 201 206 /** Interval for the position progress **/ 202 overrideprotected function positionInterval():void {207 protected function positionInterval():void { 203 208 iterator++; 204 209 if(iterator > 10) { … … 217 222 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PLAYING}); 218 223 } 219 super.positionInterval(); 224 if(position < item['duration']) { 225 model.sendEvent(ModelEvent.TIME,{position:position,duration:item['duration']}); 226 } else if (item['duration'] > 0 && model.config['respectduration']) { 227 pause(); 228 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.COMPLETED}); 229 } 220 230 }; 221 231 … … 224 234 override public function seek(pos:Number):void { 225 235 var off:Number = getOffset(pos); 236 clearInterval(interval); 226 237 if(off < byteoffset || off >= byteoffset+stream.bytesLoaded) { 227 238 timeoffset = position = getOffset(pos,true); … … 229 240 load(item); 230 241 } else { 231 super.seek(pos);242 position = pos; 232 243 if(mp4) { 233 244 stream.seek(getOffset(position-timeoffset,true)); … … 235 246 stream.seek(getOffset(position,true)); 236 247 } 248 interval = setInterval(positionInterval,100); 249 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PLAYING}); 237 250 } 238 251 }; … … 259 272 /** Destroy the HTTP stream. **/ 260 273 override public function stop():void { 261 super.stop();262 274 if(stream.bytesLoaded+byteoffset < stream.bytesTotal) { 263 275 stream.close(); … … 265 277 stream.pause(); 266 278 } 279 clearInterval(interval); 267 280 clearInterval(loadinterval); 268 byteoffset = timeoffset = 0;281 byteoffset = timeoffset = position = 0; 269 282 keyframes = undefined; 270 283 meta = false; 284 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.IDLE}); 271 285 }; 272 286
Note: See TracChangeset
for help on using the changeset viewer.
