@@ -1095,12 +1095,15 @@ var InputPlugin = new Class({
10951095
10961096 input . dragState = 2 ;
10971097
1098- input . dragX = pointer . x - gameObject . x ;
1099- input . dragY = pointer . y - gameObject . y ;
1100-
11011098 input . dragStartX = gameObject . x ;
11021099 input . dragStartY = gameObject . y ;
11031100
1101+ input . dragStartXGlobal = pointer . x ;
1102+ input . dragStartYGlobal = pointer . y ;
1103+
1104+ input . dragX = input . dragStartXGlobal - input . dragStartX ;
1105+ input . dragY = input . dragStartYGlobal - input . dragStartY ;
1106+
11041107 gameObject . emit ( Events . GAMEOBJECT_DRAG_START , pointer , input . dragX , input . dragY ) ;
11051108
11061109 this . emit ( Events . DRAG_START , pointer , gameObject ) ;
@@ -1288,8 +1291,27 @@ var InputPlugin = new Class({
12881291 this . emit ( Events . DRAG_ENTER , pointer , gameObject , target ) ;
12891292 }
12901293
1291- var dragX = pointer . x - gameObject . input . dragX ;
1292- var dragY = pointer . y - gameObject . input . dragY ;
1294+ var dragX ;
1295+ var dragY ;
1296+
1297+ if ( ! gameObject . parentContainer )
1298+ {
1299+ dragX = pointer . x - input . dragX ;
1300+ dragY = pointer . y - input . dragY ;
1301+ }
1302+ else
1303+ {
1304+ var dx = pointer . x - input . dragStartXGlobal ;
1305+ var dy = pointer . y - input . dragStartYGlobal ;
1306+
1307+ var rotation = gameObject . getParentRotation ( ) ;
1308+
1309+ var dxRotated = dx * Math . cos ( rotation ) + dy * Math . sin ( rotation ) ;
1310+ var dyRotated = dy * Math . cos ( rotation ) - dx * Math . sin ( rotation ) ;
1311+
1312+ dragX = dxRotated + input . dragStartX ;
1313+ dragY = dyRotated + input . dragStartY ;
1314+ }
12931315
12941316 gameObject . emit ( Events . GAMEOBJECT_DRAG , pointer , dragX , dragY ) ;
12951317
0 commit comments