Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
2 / 2 / 0
Регистрация: 30.12.2009
Сообщений: 8

Передвижение объекта при событии мыши

25.02.2011, 15:12. Показов 5886. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я хочу, чтобы объект двигался в одном направлении при наведении на него мышью и в обратном направлении при отведении мыши от него. Это реализовать не сложно, однако проблема в том, что когда объект проходит часть пути и я отвожу от него мышь, то он вместо того, чтоб начать движение в обратном направлении, никак не реагирует, снова навожу на него мышью и он начинает своё движение с самого начала. То есть мне надо, чтоб объект двигался в одном направлении и когда происходило событие мыши (наведениее, отведение), он начинал двигаться в обратном направлении с того места, где произошло событие. В случае, если я мышь наведу и не буду отводить, то чтобы объект дошёл до конца и остановился в ожидании, что я отведу мышь от него.
Можно объяснить словами в каких кадрах что прописать и т.д. СПАСИБО!
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2011, 15:12
Ответы с готовыми решениями:

Передвижение объекта к курсору мыши
В 2D по платформе прыгает мяч. Нужно, чтобы мяч двигался в сторону курсора по X. Пробую реализовать через addforce, мяч просто скачет в...

Ограничить передвижение курсора мыши левой нижней четвертью экрана.При нажатие левой клавиши мыши выключить индикатор NumLock(+Звук),при нажатие право
Не могу решить подскожите кто знает.(Ограничить передвижение курсора мыши левой нижней четвертью экрана.При нажатие левой клавиши мыши...

Unity3D Не могу найти пример как сделать передвижение по щелчку мыши передвижение персона
Пытаюсь понять как сделать передвижение по щелчку, примерно как в игре "mekorama" правда там сенсор, но это суть не меняет ...

8
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
25.02.2011, 21:28
В кадрах лучше не писать, писать лучше в классах.
При наведении используйте конструкцию типа mc.x+=5;
А при отведении - mc.x-=5;
Вообще из такого описания не совсем понятно что и как вы там реализовали. Лучше показывать участки кода, в которых есть проблема.
1
2 / 2 / 0
Регистрация: 30.12.2009
Сообщений: 8
26.02.2011, 02:42  [ТС]
Я короче понял
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(currentFrame==1) stop();
var a:int=0;
var b:int=0;
btn.addEventListener(MouseEvent.MOUSE_OVER, fun);
btn.addEventListener(MouseEvent.MOUSE_OUT, fun1);
function fun(e:MouseEvent):void {
    if(currentFrame==1)
        play();
        else if(currentFrame>20) {
        a=currentFrame;
        gotoAndPlay(40-a);
        }
}
function fun1(f:MouseEvent):void {
    if(currentFrame==20)
       play();
       else if(currentFrame<20&&currentFrame>1) {
       b=currentFrame;
       gotoAndPlay(40-b);
       }
}
И еще stop(); в 20-ом кадре.
А как теперь сделать так, если у меня есть несколько кнопок, чтоб двигалась только та, на которую я навожу мышью?

Добавлено через 2 минуты
Цитата Сообщение от TanaTiX Посмотреть сообщение
В кадрах лучше не писать, писать лучше в классах.
При наведении используйте конструкцию типа mc.x+=5;
А при отведении - mc.x-=5;
Вообще из такого описания не совсем понятно что и как вы там реализовали. Лучше показывать участки кода, в которых есть проблема.
Ну я написал вот в кадрах, а что ты имел ввиду, когда говорил, что лучше в классах?
1
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
26.02.2011, 16:00
1) Создаем булевую переменную с исходным значением false
2) По событию наведения переводим ее значение в true, если ее значение было false, и запускаем, к примеру, событие Event.ENTER_FRAME - т.е. событие будет срабатывать при каждом входе в кадр.
3) В обработчике пишем конструкцию типа
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
if(bool){
   if(currentFrame<totalFrames){
      gotoAndStop(currentFrame+1);
   }
}else{
   if(currentFrame>1){
      gotoAndStop(currentFrame-1);
   }else{
       //тут отписываемся от слушателя
   }
}
Писал на коленке - могут быть неточности.
4) По отведению мыши переводим в значение булевой переменной в false.
Ну я написал вот в кадрах, а что ты имел ввиду, когда говорил, что лучше в классах?
Проектом, код которого написан в кадрах или, тем более, не дай бог, на объектах, очень тяжело управлять. В одних кадрах переменные есть, в других - нет, в третьих - уже нет объектов, а код к ним обращается. Высокий риск создания одинх и тех же слушателей, т.е. генерирование большого числа объектов, которые уже существуют, что засоряет память, затрудняет отладку и пр.
+ код, написанный в кадрах не удобно отслеживать - бегай себе по кадрам, по объектам, пока найдешь. Писать в кадрах - значит писать во Flash IDE, а тот редактор кода... Убогий он. Попробуйте FlashDevelop например.
Научиться писать в классах тоже не просто, но зато с пониманием сути происходящего придет и истинное просветление.
2
2 / 2 / 0
Регистрация: 30.12.2009
Сообщений: 8
26.02.2011, 23:02  [ТС]
Спасибо большое, TanaTIX. Я начал учить флеш и ActionScript совсем недавно. Я знаю, что адоб флеш как ИДЕ некудышний. Стоит на закачке Адоб флекс. Это как раз меня и раздражает в программировании в кадрах, что код пишеться в разном месте и тяжело отслеживать. Но я написал вот это в первом кадре (за исключением команды stop(); в 20ом кадре из 40ка, чтоб объект остановился), тем не менее прослушивание мыши и функции работают напротяжении всего мувика. Я подумал, можно ли писать весь код только в одном кадре? И как мне впихнуть этот stop(); в основную программу в первом кадре?
0
 Аватар для lolopolosko
1354 / 315 / 6
Регистрация: 21.11.2009
Сообщений: 992
26.02.2011, 23:08
Создайте слой с одним ключевым кадром и в нем пишите весь код... или просто научитесь писать классы в Флеше
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
26.02.2011, 23:17
Цитата Сообщение от lolopolosko Посмотреть сообщение
Создайте слой с одним ключевым кадром и в нем пишите весь код... или просто научитесь писать классы в Флеше
Зачем давать изначально идеологически неверную альтернативу написания кода в кадрах? Это было в моде во время ас1.
Gasheck, есть один очень интересный метода addFrameScript. Интересен он тем, что добавляет в кадр нужную там функцию (например, stop()), и тем, что является недокументированным. Т.е. в официальной документации о нем ни слова, но используют его довольно часто. Он поможет избавиться от стопов в кадрах, да и мало ли еще где.
1
 Аватар для lolopolosko
1354 / 315 / 6
Регистрация: 21.11.2009
Сообщений: 992
26.02.2011, 23:39
об этом методе я написал месяц назад https://www.cyberforum.ru/acti... ost1329080
А вот вы как раз даете неверное альтернативу написания кода...
За этим методом проследить довольно трудно + он не просто так не добавлен в документацию...
Цитата Сообщение от TanaTiX Посмотреть сообщение
но используют его довольно часто
Хотелось бы посмотреть кто его использует так часто ... Причина не использования его, это та что этот метод могут попросту выключить в следующих версиях плеера
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
26.02.2011, 23:50
Выключить могут газ, свет и пр.
А производители программного обеспечения как правило следят за совместимостью с предыдущими версиями. Пример - это весь as1: на нем писать можно, но ни один уважающий себя кодер на нем писать не будет (создание баннеров не в счет - это другое направление). Так что скорее включат, чем выключат.

ЗЫ. надеюсь обойдется без холивара
ЗЗЫ. а вообще это просто удобно. Но если даже вы окажитесь правы, то не тяжело написать альтернативу с абсолютно идентичным функционалом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2011, 23:50
Помогаю со студенческими работами здесь

Как остановить передвижение объекта при столкновении с другим объектом
Как остановить передвижение объекта при столкновении с другим объектом при движении вправо, влево Код передвижения вправо (первый...

Передвижение объекта по шахматке, как останавливать при достижении края поля?
Добрый день, есть грубо говоря шахматная доска, нужно передвигать объект с одного края до другого (если по пути встречается препятствие -...

Перемещение объекта при помощи мыши
Доброго времени суток. Как можно реализовать перемещение какого либо объекта (label, button и т.д) с помощью мыши, нажал на него и таскаешь...

Системное передвижение мыши
Всем привет. Как возможно сделать передвижение курсора с полной эмуляцией настоящей мыши? Как я понимаю, драйвер ввода посылает куда-то...

SendInput передвижение мыши
Всем привет. Никак не могу разобраться с SendInput. Засунул на таймер такой код: TPoint pt; GetCursorPos(&amp;pt); int rX, rY; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru