Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   а как насчет onMouseStop? (http://www.flasher.ru/forum/showthread.php?t=90770)

Ksюta 17.01.2007 22:59

а как насчет onMouseStop?
 
Знаю что вопрос тупой))) НО поиском побегала, не нашла. Подскажите плиз... есть событие onMouseMove, а как начет обратного? То есть если мышь останавливается, дейтсвие прекращает выполняться.
Очень спасиб если кто поможет)))

StrangeMan 17.01.2007 23:03

проверить что мышь остановилась достаточно просто... считывай координаты мыши.. и вычитай их из предыдущео результата считывания, если результат вычитания будет 0 то мышка не двигается..

Ksюta 17.01.2007 23:12

что-то дебри какие-то растут в коде и ничего не работает)))).... как их правильно считать?

StrangeMan 17.01.2007 23:17

_xmouse - координата по Х
_ymouse - координата по У

Ksюta 17.01.2007 23:32

А, ну тогда.... ничего не понятно.
то что это координаты по Х и У я знаю... но вот как их СЧИТАТЬ?)))
К переменной их приклеить что ли?
Не ругайтесь если туплю)))

StrangeMan 17.01.2007 23:49

ну дa... попробовать так и сделать...
...исправил...
Код:

var x_old=0;
var y_old=0;
var function mouseStop():Void{
    if((_xmouse-x_old)==0&&(_ymouse-y_old)==0){
        func();  //тут пишешь ту функцию которую хочешь запускать приостановки мыши
        clearInterval(id);// уту строчку можно убрать, но с ней у нас функция func() будет вызвана всего один раз, а без неё постоянно когда мышка будет стоять
 };
      x_old=_xmouse;
      y_old=_ymouse;
}
var id=srtInterval(mouseStop, 100);// здесь задаётся время через которое будет проверятся остановилась ли мышка

- этот код я не проверял, и если честно я пока в этом деле тоже новичок, в книжках пишут что можно сделать по умному и создать своё событие, но я пока до этого не дошёл

Aziz Zaynutdinoff 17.01.2007 23:50

понятное дело в переменную заносить...
сначала выполняем проверку на разность между предыдущими координатами и текущими, если они не равны 0, обновляем значения предыдущих координат, если равны 0, значит мышь стоит

Aziz Zaynutdinoff 17.01.2007 23:52

StrangeMan
в твоём случае событие сработает только в случае, когда мышь будет в (0, 0)

Ksюta 17.01.2007 23:59

Цитата:

Сообщение от Aziz Zaynutdinoff
StrangeMan
в твоём случае событие сработает только в случае, когда мышь будет в (0, 0)

точно. и функция будет выполняться через интервал времени, а мне нужно чтобы проверка эта срабатывала постоянно.... елки, уже пример почти доделала комп завис... щас может опять склею.

StrangeMan 18.01.2007 00:05

проверка на любое событие происходит через определённый интрвал времени, здай этот интервал меньше... при 100 интервал будет 0,1 секунды по моему это достаточно чтобы ни кто не заметил...

а на счёт только когда мышь будет в 0, 0 не понял??? это почему ето.. я код исправил

combo 18.01.2007 00:08

может лучше _root.onEnterFrame а не setInterval. Хотя не доверяю я этому событию, мне здается, что флешка из-за него начинает тормозить.

miramax 18.01.2007 00:15

Смотря для каких целей. Но тебе лучше юзать onEnterFrame. И нифига события не тормозят, как бы не наоборот.

Ksюta 18.01.2007 00:23

Итервал иногда и круто весит если где что забудешь почистить....
короче улетел мой тот код, составила щас уже упрощенный до предела...
вот:
Код:

var i:Number = 1;
function myScript():Void {
        var dot:MovieClip = attachMovie("mc1", "new_mc"+i, i++);
        dot._x = _xmouse;
        dot._y = _ymouse;
        dot.onMouseMove = function() {
        // вот тут по идее нужно задать чтобы эти мувики через определенный интервал времени аттачились И ТОЛЬКО пока мышка движется. Но как?
        };
}
myScript();


StrangeMan 18.01.2007 00:23

разве онЭнтерФрейм... работает когда мувик не проигрывается???? по моему нет.. отсюда вывод этим пользоваться не стоит( по карйней мере в данном случае)...

Kikasso 18.01.2007 00:25

а как вам такой способ?
Код:

checkRate = 100;
lim = 1000;
function rememba (){
lastMove = getTimer();
if(!active){
        checkInterval = setInterval( checkIt, checkRate );
        trace("active");
}
active = true;
}
onMouseMove = rememba;

function checkIt(){
if(getTimer() - lastMove > lim){
trace("stopped");
clearInterval(checkInterval);
active = false;
}
}
onMouseMove();


pkfun 18.01.2007 00:34

Ksюta
Если не секрет, для чего вам такое событие понадобилось?

Kikasso 18.01.2007 00:37

пока писал, информация устарела ((
если надо аттачить мувики, предлагаю такой способ:
Код:

var lastX:Number;
var lastY:Number;
var i:Number = 1;

function myScript():Void {
if( lastX == _xmouse && lastY == _ymouse) return;
        var dot:MovieClip = attachMovie("mc1", "new_mc"+i, i++);
        dot._x = lastX = _xmouse;
        dot._y = lastY = _ymouse;
}
onEnterFrame = myScript;

но только надо как-то сечь количество этих клипов, а то их будет слишком много.
Или использовать BitmapData
upd: исправил, было пропущено i

Ksюta 18.01.2007 00:40

Цитата:

Сообщение от pkfun
Ksюta
Если не секрет, для чего вам такое событие понадобилось?

Да не серет в принципе)))... нужно чтоб в ролике буквы из массива аттачились таким образом. Трюк для заставки. просто самая фишка в том, что они должны аттачиться или останавливаться в зависимости от поведения мыши... я вообще в AS не полный чайник уже, но это осилить оказалось трудно...

Ksюta 18.01.2007 00:45

Цитата:

Сообщение от Kikasso
только надо как-то сечь количество этих клипов, а то их будет слишком много.
Или использовать BitmapData

Спасибо) Их как раз не очень много...., так что наверное подойдет,... щас поразбираюсь чуть.

Kikasso 18.01.2007 00:58

я там i забыл, исправил.
Если сабж, то пост 15.
Если аттачить по мышке, пост 17.

Ksюta 18.01.2007 01:06

Цитата:

Сообщение от Kikasso
я там i забыл, исправил.
Если сабж, то пост 15.
Если аттачить по мышке, пост 17.

Ну я так и поняла, там без i вылитый startDrag получался.))
спасибо)
тольк при frameRate 45 это оччень круто))) щас подумаю как их на интервал посадить, чтоб пореже...

Ksюta 18.01.2007 01:17

Всем спасибо, решила проблему)


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

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