|
|
@@ -35,13 +35,12 @@ namespace oxygine
|
|
|
_flags(flag_visible | flag_touchEnabled | flag_touchChildrenEnabled | flag_fastTransform),
|
|
|
_parent(0),
|
|
|
_alpha(255),
|
|
|
- _pressed(0),
|
|
|
- _overred(0),
|
|
|
_stage(0),
|
|
|
_material(0)
|
|
|
{
|
|
|
_transform.identity();
|
|
|
_transformInvert.identity();
|
|
|
+ _pressedOvered = 0;
|
|
|
}
|
|
|
|
|
|
void Actor::copyFrom(const Actor& src, cloneOptions opt)
|
|
|
@@ -58,8 +57,8 @@ namespace oxygine
|
|
|
_flags = src._flags;
|
|
|
_parent = 0;
|
|
|
_alpha = src._alpha;
|
|
|
- _overred = 0;
|
|
|
- _pressed = 0;
|
|
|
+
|
|
|
+ _pressedOvered = 0;
|
|
|
|
|
|
_transform = src._transform;
|
|
|
_transformInvert = src._transformInvert;
|
|
|
@@ -124,8 +123,7 @@ namespace oxygine
|
|
|
_stage->removeEventListeners(this);
|
|
|
_stage = 0;
|
|
|
|
|
|
- _pressed = 0;
|
|
|
- _overred = 0;
|
|
|
+ _pressedOvered = 0;
|
|
|
|
|
|
spActor actor = _children._first;
|
|
|
while (actor)
|
|
|
@@ -276,9 +274,9 @@ namespace oxygine
|
|
|
return stream.str();
|
|
|
}
|
|
|
|
|
|
- pointer_index Actor::getPressed() const
|
|
|
+ pointer_index Actor::getPressed(MouseButton b) const
|
|
|
{
|
|
|
- return _pressed;
|
|
|
+ return _pressedButton[b];
|
|
|
}
|
|
|
|
|
|
pointer_index Actor::getOvered() const
|
|
|
@@ -286,10 +284,11 @@ namespace oxygine
|
|
|
return _overred;
|
|
|
}
|
|
|
|
|
|
- void Actor::setNotPressed()
|
|
|
+ void Actor::setNotPressed(MouseButton b)
|
|
|
{
|
|
|
- _pressed = 0;
|
|
|
- _getStage()->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onGlobalTouchUpEvent));
|
|
|
+ _pressedButton[b] = 0;
|
|
|
+ if (_pressedOvered == _overred)//!_pressed[0] && !_pressed[1] && !_pressed[2])
|
|
|
+ _getStage()->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onGlobalTouchUpEvent));
|
|
|
|
|
|
updateStatePressed();
|
|
|
}
|
|
|
@@ -297,10 +296,10 @@ namespace oxygine
|
|
|
void Actor::_onGlobalTouchUpEvent(Event* ev)
|
|
|
{
|
|
|
TouchEvent* te = safeCast<TouchEvent*>(ev);
|
|
|
- if (te->index != _pressed)
|
|
|
+ if (te->index != _pressedButton[te->mouseButton])
|
|
|
return;
|
|
|
|
|
|
- setNotPressed();
|
|
|
+ setNotPressed(te->mouseButton);
|
|
|
|
|
|
TouchEvent up = *te;
|
|
|
up.bubbles = false;
|
|
|
@@ -351,11 +350,12 @@ namespace oxygine
|
|
|
if (event->type == TouchEvent::TOUCH_DOWN)
|
|
|
{
|
|
|
TouchEvent* te = safeCast<TouchEvent*>(event);
|
|
|
- if (!_pressed)
|
|
|
+ if (!_pressedButton[te->mouseButton])
|
|
|
{
|
|
|
- _pressed = te->index;
|
|
|
- _getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onGlobalTouchUpEvent));
|
|
|
+ if (_pressedOvered == _overred)//!_pressed[0] && !_pressed[1] && !_pressed[2])
|
|
|
+ _getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onGlobalTouchUpEvent));
|
|
|
|
|
|
+ _pressedButton[te->mouseButton] = te->index;
|
|
|
updateStatePressed();
|
|
|
}
|
|
|
}
|
|
|
@@ -365,14 +365,14 @@ namespace oxygine
|
|
|
if (event->type == TouchEvent::TOUCH_UP)
|
|
|
{
|
|
|
TouchEvent* te = safeCast<TouchEvent*>(event);
|
|
|
- if (_pressed == te->index)
|
|
|
+ if (_pressedButton[te->mouseButton] == te->index)
|
|
|
{
|
|
|
click = *te;
|
|
|
click.type = TouchEvent::CLICK;
|
|
|
click.bubbles = false;
|
|
|
//will be dispatched later after UP
|
|
|
|
|
|
- setNotPressed();
|
|
|
+ setNotPressed(te->mouseButton);
|
|
|
}
|
|
|
}
|
|
|
|