Форум 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)
-   -   Как обработать "пока зажата мышь" и выход курсора за границы флешки (http://www.flasher.ru/forum/showthread.php?t=145979)

Polimorth 25.10.2010 14:11

Как обработать "пока зажата мышь" и выход курсора за границы флешки
 
Салюд, комрадэс!
Оптом два ламерских вопроса.
1) Как выполнят действия при ситуации "пока зажата мышь"?
Например, есть стрелка, прокручивающая изображение. При нажатии на неё тупо по onPress добавляем к координатам изображения какое-нибудь число. А как сделать, чтобы прокрутка шла пока мышь зажата?
2) При drag'n'drop'е когда курсор выходит за пределы флешки возникают волшебные явления.
Если, скажем, зажать кнопку мыши, тащить объект, и выйти за границы флешки, то при возвращении во флешку будет считаться, что кнопка мыши зажата - драг н дроп продолжится уже без всяких нажатий, просто по движению мыши. Кто-нибудь в курсе, как этого избежать?

Спасибо за внимание!

Добавлено через 2 минуты
Да, версия флеша - 8. Соответственно AS2

aksios 25.10.2010 14:17

1. Повесить проверку события с частотой, отличной от 1. Намекаю: к примеру ОнЕнтерФрейм.
2. Проблема красиво устранена в АС3, в АС2 лучше повесить условие "убейся" для координаты мыша на границах ролика - поля с запасом, чтобы сработать успело.

Polimorth 25.10.2010 14:45

1. А какое событие проверять? Если тот же онПресс, то эффект получается тот же самый. Или, может, я неправильно понимаю как задать частоту проверки события, оличную от 1?
Я пишу в первом кадре:
Код AS1/AS2:

this.onEnterFrame = function() {
        _root.left.onPress = function()  {действия}
}

ЗДесь left - та самая стрелка.

2. Реализовал.

Вообще спасибо большое, использование onEnterFrame позволило сильно упростить и улучшить флешку

aksios 25.10.2010 14:50

Так как у Вас прокрутка реализована? Поставьте в эту функцию в действия - прокрутить на пиксель.

Polimorth 25.10.2010 15:03

Ну тык у меня вместо "действия" и стоит изменения координат прокручиваемого объекта на пиксель)

aksios 25.10.2010 15:05

Упс, а где if? Он пресс один раз происходит - до следующего раза.

Polimorth 25.10.2010 15:11

Значит должно быть что-то в стиле
Код AS1/AS2:

this.onEnterFrame = function() {
        if (_root.left.onPress)
                  {действия}
}

А какой синтаксис тогда?

aksios 25.10.2010 15:37

Что то вроде:

Код AS1/AS2:

left.onPress=function(){a="ok"};
left.onRelease=function(){a="not ok"};
this.onEnterFrame = function() {
        if (a=="ok")
                  {scrooll._x++}}

:)

Polimorth 25.10.2010 17:44

Oh yeap! Спасибо большое, что потратили на нас неразумных столько времени)
Удачи!

Bred45 01.11.2010 16:24

А еще можно построить клип по границам флешки и отслеживать роллауты с ролловерами. Что-то вроде того

Код AS1/AS2:

var clip:MovieClip = _root.createEmptyMovieClip("clip", 1000);
clip.lineStyle(0,0,0);
clip.beginFill(0,0);
clip.moveTo(0,0);
var xMax:Number = Stage.width, yMax:Number = Stage.height;
clip.lineTo(0, yMax), clip.lineTo(xMax, yMax), clip.lineTo(xMax, 0), clip.lineTo(0);
clip.endFill();
clip.useHandCursor = false;
clip.onRollOut = function():Void  {
        trace("ушел");
};
clip.onRollOver = function():Void  {
        trace("вернулся");
};



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

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