 			//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) {

				_mouseY = e.pageY - canvas.offsetTop;
				if (hasEventListener(flashType)) {
					if(flashType!=MouseEvent.MOUSE_MOVE){
						dispatchEvent(new MouseEvent(flashType,true,false,_mouseX,_mouseY,null,e.ctrlKey,e.altKey,e.shiftKey,e.buttons>0,e.wheelDelta));
					}else {
						needSendMouseMove = e;
					}

					break;
				case "mouseup":
					flashType = MouseEvent.MOUSE_UP;
					isButtonDown = false;
					break;
				case "mousewheel":
					flashType = MouseEvent.MOUSE_WHEEL;
