package ru.denivip.stats { import flash.events.TimerEvent; import flash.utils.Timer; import org.osmf.events.MediaElementEvent; import org.osmf.media.MediaElement; import org.osmf.traits.MediaTraitType; import org.osmf.traits.TimeTrait; public class StatsTracker { private static var SERVER_HOST:String = 'shared.local'; private static var SERVER_PORT:uint = 8125; private var media:MediaElement; private var timer:Timer; private var socket:StatsSocket; public function StatsTracker(media:MediaElement) { this.media = media; this.timer = new Timer(500); this.socket = new StatsSocket(); timer.addEventListener(TimerEvent.TIMER, function (event:TimerEvent):void { checkPosition(); }); media.addEventListener(MediaElementEvent.TRAIT_ADD, onTraitAdd); media.addEventListener(MediaElementEvent.TRAIT_REMOVE, onTraitRemove); } public function start():void { trace('start tracking'); socket.connect(SERVER_HOST, SERVER_PORT); timer.start(); } public function stop():void { trace('do not track'); socket.close(); timer.stop(); } private function checkPosition():void { var time:TimeTrait = media.getTrait(MediaTraitType.TIME) as TimeTrait; trace(time.currentTime); socket.writeln(time.currentTime.toString()); } private function onTraitAdd(e:MediaElementEvent):void { trace(e.traitType + ' trait added'); if (e.traitType == MediaTraitType.TIME) { start(); } } private function onTraitRemove(e:MediaElementEvent):void { trace(e.traitType + ' trait removed'); if (e.traitType == MediaTraitType.TIME) { stop(); } } } }