Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как подружить MouseCLICK и MouseDOWN (http://www.flasher.ru/forum/showthread.php?t=126727)

random13 25.06.2009 18:59

как подружить MouseCLICK и MouseDOWN
 
как я уже писал в предыдущей теме что не могу поладить два события клик и нажатие отпускание,

в одном случае мне нужно мувик начать двигать а в другом сдвинуть относительно курсора, вобщем другое действие)

Код AS3:

mc.addEventListener(MouseEvent.MOUSE_DOWN, OnMapMouseDown);
mc.addEventListener(MouseEvent.MOUSE_UP, StopMove);
mc.addEventListener(MouseEvent.CLICK, StopMove);

Код AS3:

private function OnMapMouseDown(e:MouseEvent):void {
        var timer:Timer = new Timer(500, 1);
        timer.start();
        timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
                e.stopPropagation();
                mc.addEventListener(MouseEvent.MOUSE_MOVE, StartMove);
        });
        mc.addEventListener(MouseEvent.MOUSE_UP, MoveAndDraw);
}
 
private function MoveAndDraw(e:Event):void {
        e.stopPropagation();
        // и что то еще далее
}

что делаю не правильно? возможно есть другие подходы?

$mival 25.06.2009 19:29

а где код на клик?
upd: а опять эта тема, автор: выкладывайте все и сразу!

random13 25.06.2009 19:36

решение нашел вот здесь http://www.actionscript.org/forums/s....php3?t=159670

Код AS3:

import flash.utils.getTimer; 
var lastClick:int;
box.addEventListener("mouseDown", mdh);
function mdh (event) {   
box.startDrag();   
lastClick=getTimer();
}
box.addEventListener("mouseUp", muh);
function muh (event) {   
 box.stopDrag();   
if (lastClick+250>getTimer()) { 
      trace ("click")
  } }


$mival 25.06.2009 20:04

а если в ОС в настройках мыши будет выставлено другая задержка на клик (таймаут на клик) и пользователю не подойдет ваш клик в четверть секунды?
что мешало слушать CLICK и оперировать флагами когда что было нажато?

random13 25.06.2009 20:05

хорошо если данный метода плох, что посоветуете сделать в данной ситуации?

Добавлено через 18 минут
не совсем понял, можно более конкретно

Kidd002 25.06.2009 21:23

Как вариант:
Код AS3:

mc.addEventListener(MouseEvent.MOUSE_DOWN, down);
 
...
 
private function down(e:MouseEvent):void {
        mc.addEventListener(MouseEvent.MOUSE_MOVE, move);
        mc.addEventListener(MouseEvent.MOUSE_UP, up);
}
 
private function move(e:MouseEvent):void {
        mc.removeEventListener(MouseEvent.MOUSE_UP, up);
        mc.removeEventListener(MouseEvent.MOUSE_MOVE, move);
        mc.addEventListener(MouseEvent.MOUSE_UP, up2);
        mc.startDrag();
        trace("Перетаскивание");
 
}
private function up(e:MouseEvent):void {
        mc.removeEventListener(MouseEvent.MOUSE_MOVE, move);
        trace("Клик");
}
private function up2(e:MouseEvent):void {
        mc.stopDrag();
        mc.removeEventListener(MouseEvent.MOUSE_UP, up2);
}

Как-то так

random13 25.06.2009 22:35

огромное спасибо


Часовой пояс GMT +4, время: 00:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.