 			//if (delta >= interval) {
 			//	lastUpdateTime = now - (delta % interval);
 				if (needSendMouseMove) {
-					dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, _mouseX, _mouseY,null,needSendMouseMove.ctrlKey,needSendMouseMove.altKey,needSendMouseMove.shiftKey,needSendMouseMove.buttons>0));
+					dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, _mouseX, _mouseY,null,needSendMouseMove.ctrlKey,needSendMouseMove.altKey,needSendMouseMove.shiftKey,(needSendMouseMove.buttons!=null)?(needSendMouseMove.buttons>0):isButtonDown));
 					needSendMouseMove = null;
 				}
 				if (needSendTouchMove) {

					break;
				case "mousedown":
					flashType = MouseEvent.MOUSE_DOWN;
					break;
				case "mouseenter":
					flashType = MouseEvent.ROLL_OVER;

		private var _x:Number = 0;
		private var _y:Number = 0;
		private var _z:Number = 0;
		private var isButtonDown:Boolean = false;
		
		/**
		 * Stage is a singular instance per window and cannot be instantiated twice.
