Skip to content

Commit 286eae4

Browse files
committed
fixed #1509 correct a bug for MouseMove
1 parent e5709df commit 286eae4

File tree

2 files changed

+99
-2
lines changed

2 files changed

+99
-2
lines changed

cocos2d/layers_scenes_transitions_nodes/CCLayer.js

+65
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ cc.Layer = cc.Node.extend(/** @lends cc.Layer# */{
4444
_isKeyboardEnabled:false,
4545
_touchPriority:0,
4646
_touchMode:cc.TOUCH_ALL_AT_ONCE,
47+
_isMouseEnabled:false,
4748

4849
/**
4950
* Constructor
@@ -62,6 +63,7 @@ cc.Layer = cc.Node.extend(/** @lends cc.Layer# */{
6263
this.setContentSize(director.getWinSize());
6364
this._isTouchEnabled = false;
6465
this._isAccelerometerEnabled = false;
66+
this._isMouseEnabled = false;
6567
this._touchMode = cc.TOUCH_ALL_AT_ONCE;
6668
this._touchPriority = 0;
6769
},
@@ -92,6 +94,19 @@ cc.Layer = cc.Node.extend(/** @lends cc.Layer# */{
9294
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, this._touchPriority, true);
9395
},
9496

97+
isMouseEnabled:function(){
98+
return this._isMouseEnabled;
99+
},
100+
101+
setMouseEnabled:function(enabled){
102+
if(this._isMouseEnabled != enabled){
103+
this._isMouseEnabled = enabled;
104+
if(this._isRunning){
105+
106+
}
107+
}
108+
},
109+
95110
/**
96111
* whether or not it will receive Touch events.<br/>
97112
* You can enable / disable touch events with this property.<br/>
@@ -343,6 +358,56 @@ cc.Layer = cc.Node.extend(/** @lends cc.Layer# */{
343358
},
344359

345360
didAccelerate:function (pAccelerationValue) {
361+
},
362+
363+
// ---------------------CCMouseEventDelegate interface------------------------------
364+
365+
//
366+
// left
367+
//
368+
onMouseDown:function(event){
369+
},
370+
371+
onMouseDragged:function(event){
372+
},
373+
374+
onMouseMoved : function(event){
375+
},
376+
377+
onMouseUp:function(event){
378+
},
379+
380+
//right
381+
382+
onRightMouseDown : function(event){
383+
},
384+
385+
onRightMouseDragged : function(event){
386+
},
387+
388+
onRightMouseUp : function( event ){
389+
},
390+
391+
//other
392+
onOtherMouseDown : function(event){
393+
},
394+
395+
onOtherMouseDragged : function( event){
396+
},
397+
398+
onOtherMouseUp:function(event){
399+
},
400+
401+
//scroll wheel
402+
onScrollWheel : function( event){
403+
},
404+
405+
// enter / exit
406+
407+
onMouseEntered:function(theEvent){
408+
},
409+
410+
onMouseExited:function(theEvent){
346411
}
347412
});
348413

cocos2d/touch_dispatcher/CCTouchDispatcher.js

+34-2
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ cc.TouchHandlerHelperData = function (type) {
121121
* @extends cc.Class
122122
*/
123123
cc.TouchDispatcher = cc.Class.extend(/** @lends cc.TouchDispatcher# */{
124+
_mousePressed:false,
124125
_targetedHandlers:null,
125126
_standardHandlers:null,
126127
_locked:false,
@@ -146,10 +147,19 @@ cc.TouchDispatcher = cc.Class.extend(/** @lends cc.TouchDispatcher# */{
146147
this._toAdd = false;
147148
this._toQuit = false;
148149
this._locked = false;
150+
this._mousePressed = false;
149151
cc.TouchDispatcher.registerHtmlElementEvent(cc.canvas);
150152
return true;
151153
},
152154

155+
_setMousePressed:function (pressed) {
156+
this._mousePressed = pressed;
157+
},
158+
159+
_getMousePressed:function () {
160+
return this._mousePressed;
161+
},
162+
153163
/**
154164
* Whether or not the events are going to be dispatched. Default: true
155165
* @return {Boolean}
@@ -350,7 +360,12 @@ cc.TouchDispatcher = cc.Class.extend(/** @lends cc.TouchDispatcher# */{
350360
claimed = true;
351361
switch (helper.type) {
352362
case cc.TOUCH_MOVED:
353-
handler.getDelegate().onTouchMoved(touch, event);
363+
if (cc.Browser.isMobile) {
364+
handler.getDelegate().onTouchMoved(touch, event);
365+
} else {
366+
if (this._mousePressed)
367+
handler.getDelegate().onTouchMoved(touch, event);
368+
}
354369
break;
355370
case cc.TOUCH_ENDED:
356371
handler.getDelegate().onTouchEnded(touch, event);
@@ -394,7 +409,12 @@ cc.TouchDispatcher = cc.Class.extend(/** @lends cc.TouchDispatcher# */{
394409
break;
395410
case cc.TOUCH_MOVED:
396411
if (mutableTouches.length > 0) {
397-
handler.getDelegate().onTouchesMoved(mutableTouches, event);
412+
if (cc.Browser.isMobile) {
413+
handler.getDelegate().onTouchesMoved(mutableTouches, event);
414+
} else {
415+
if (this._mousePressed)
416+
handler.getDelegate().onTouchesMoved(mutableTouches, event);
417+
}
398418
}
399419
break;
400420
case cc.TOUCH_ENDED:
@@ -606,6 +626,14 @@ cc.TouchDispatcher.registerHtmlElementEvent = function (element) {
606626
return;
607627

608628
if (!cc.Browser.isMobile) {
629+
window.addEventListener('mousedown', function (event) {
630+
cc.Director.getInstance().getTouchDispatcher()._setMousePressed(true);
631+
});
632+
633+
window.addEventListener('mouseup', function (event) {
634+
cc.Director.getInstance().getTouchDispatcher()._setMousePressed(false);
635+
});
636+
609637
//register canvas mouse event
610638
element.addEventListener("mousedown", function (event) {
611639
var pos = cc.getHTMLElementPosition(element);
@@ -654,6 +682,10 @@ cc.TouchDispatcher.registerHtmlElementEvent = function (element) {
654682

655683
cc.Director.getInstance().getTouchDispatcher().touchesMoved(posArr, null);
656684
});
685+
686+
element.addEventListener("mousewheel",function(event){
687+
688+
}, false);
657689
} else {
658690
//register canvas touch event
659691
element.addEventListener("touchstart", function (event) {

0 commit comments

Comments
 (0)