 
     /**
      */
-    protected function handleSoundComplete (event :Event) :void
-    {
-        handlePositionCheck(null); // also updates duration
+    protected function handleLoadingComplete (event :Event) :void
+    {
+        handlePositionCheck(); // also updates duration
         _isComplete = true;
+    }
+
+    protected function handlePlaybackComplete (event :Event) :void
+    {
+        _lastPosition = 0;
+        pause0();
+        handlePositionCheck();
+        if (_loop) {
+            play0();
+        } else {
+            updateState(MediaPlayerCodes.STATE_PAUSED);
+        }
     }
 
     protected function handleError (event :IOErrorEvent) :void

        }
    }

    protected function handlePositionCheck (event :TimerEvent) :void
    {
        if (!_isComplete) {
            dispatchEvent(new ValueEvent(MediaPlayerCodes.DURATION, getDuration()));

                // ignore
            }
        }
        _positionChecker.reset();
        _lastPosition = NaN;
    }
