PDA

Просмотр полной версии : Двойной onMouseDown


dark256
29.04.2015, 19:18
Что за чудеса: при клике (НАЖАЛ и держу) - событие происходит дважды?
onMouseUp - та же ерунда...

var PINCursor = PATH.attachMovie("PIN","PINCursor", PATH.getNextHighestDepth(),{_x: _xmouse, _y: _ymouse} )

PINCursor.onMouseDown = function() {
trace( "mouseDown" )
}
PINCursor.onMouseUp = function() {
trace("onMouseUp")
};
Mouse.addListener(PINCursor);

razve
30.04.2015, 08:32
Без этой строчки Mouse.addListener(PINCursor); тоже работает и событие происходит однажды.

dark256
30.04.2015, 09:23
Агаааа.... вот в чем дело.
То есть клип автоматом на мышь подписан, а я его еще раз туда же?

razve
01.05.2015, 11:16
Этого я уже не знаю, ибо мои познания совсем не системные)

dark256
29.09.2015, 11:51
Ну и продолжим.......
Опять двоится ивент!

http://188.226.221.96/SOUNDSTAGE/stickers.swf

В ИДЕ - нрмально, в локальном ФП - нормально, в ХРОМЕ - нормально, в ФФ - двойной...
Особенности браузера????

Причем происходит однократно, при самом первом клике. Потом - нормально.... Что за.....

testlog.text = "init *** DoubleClick.as "+"\n"

var eventDispatcher:Object = new Object();
eventDispatcher.makeEvent = function( my_event, val ){ this.broadcastMessage( my_event, val ); }
AsBroadcaster.initialize( eventDispatcher );

var mouseListener:Object = new Object()
Mouse.addListener( mouseListener )

mouseListener.onMouseDown = function() {

testlog.text += ".onMouseDown"+"\n"

testlog.text += " getTimer(): "+getTimer()+" this.xTime: "+this.xTime+" DIFF: "+(getTimer()-this.xTime)+" FLAG: "+this.flag+ "\n"

if ( getTimer()-this.xTime<300 && this.flag ){
testlog.text +=" [][][] HAVE DOUBLE CLICK"+"\n"
eventDispatcher.makeEvent( "onDoubleClick" );
this.flag = false;
} else {
testlog.text +=" *** NO DOUBLE CLICK"+"\n"
this.xTime = getTimer()
this.flag = true;
}
}

mouseListener.xTime = getTimer()
mouseListener.flag = true

testlog.text += "iniTime: "+mouseListener.xTime+"\n"

iniTime: 519
.onMouseDown
getTimer(): 1674 this.xTime: 519 DIFF: 1155 FLAG: true
*** NO DOUBLE CLICK
.onMouseDown
getTimer(): 1677 this.xTime: 1675 DIFF: 2 FLAG: true
[][][] HAVE DOUBLE CLICK

udaaff
29.09.2015, 16:21
То есть клип автоматом на мышь подписан, а я его еще раз туда же?
На мышь подписан автоматом, да, но более одного раза его не подпишешь.
Возможно, косяк плеера. Потестить к сожалению не в чем.
Не знаю, связано или нет, ловил вот такую штуку, решил костылем.
private function gem_touchBeganHandler(event:TouchEvent):void
{
var touch:Touch = event.getTouch(Context.starlingStage, TouchPhase.BEGAN);
if (!touch || touch == this._prevTouch)
return;

// trace("touch began", touch.target, "frame", i, "id", touch.id, "tapCount", touch.tapCount, this._prevTouch == touch);
// XXX костыль для FireFox, в одном карде при нажатии на объект диспатчися один и тот же тач дважды с фазой began
// XXX поэтому запоминаем предыдущий и сверяем с последующим, если тот же то выходим (player 18.0.0.194)
this._prevTouch = touch;

dark256
29.09.2015, 16:59
Нет. Тут уже вторая часть марлезонского балета.
В данном случае не клип подписан, а просто объект-слушатель.
В первом случае дабл был постоянный, а тут вот однократный.