Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.10.2014, 15:51
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 1  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
По умолчанию узнать имя мувика под курсором

Здравствуйте, как можно узнать имя мувика который находится под курсором?
1)Например есть на сцене мувики, у некоторых есть имена, например как можно организовать что бы при наведении курсора на мувик я мог получить его имя
2)если в мувике вложен еще один мувик, можно его имя получить при наведении курсора мыши?
3)если мувик с именем x в него вложен мувик с именем y , как тогда вытащить имена?

Старый 20.10.2014, 16:09
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Подпишите stage на MOUSE_OVER и узнавайте кто вызвал событие с помощью e.target

Старый 20.10.2014, 16:20
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 3  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
Цитата:
Сообщение от samana Посмотреть сообщение
Подпишите stage на MOUSE_OVER и узнавайте кто вызвал событие с помощью e.target
что то вроде
Код AS3:
trace(e.target)
?
я с e.target особо не сталкивался

Старый 20.10.2014, 16:21
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 4  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
samana, а зачем stage подписывать на mouse_over?
Вроде на mouse_move нужно?

Добавлено через 4 минуты
Вы меня простите, у меня сейчас нет возможности проверить, но с mouse_over могло бы получится,
если бы объекты лежали в spriteContainer. У Sprite есть, вроде, момент, что он показывает только
на лежащие в нем объекты, а на пустоте события не ловит. Но со stage же другая вроде история,
так как именно на ней подписывают, когда sprite пустоту игнорирует. Или я не прав?

Старый 20.10.2014, 16:52
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Gerbert, вы правы, stage не обязательно подписывать, можно ограничится и документ классом, а stage это так, для глобального масштаба.
А mouse_move будет лишним, ведь нужно узнать имя объекта под мышью именно тогда, когда на него "зашла" мышь, а не постоянно когда мышь даже в его пределах. Хотя зависит от того, что хочешь получить ТС.

Цитата:
У Sprite есть, вроде, момент, что он показывает только
на лежащие в нем объекты, а на пустоте события не ловит.
Если честно не понял вашу мысль.

delphic, попробуйте такой код
Код AS3:
import flash.events.MouseEvent;
 
addEventListener(MouseEvent.MOUSE_OVER,mouse_over);
function mouse_over(e:MouseEvent):void
{
	trace(e.target.name)
}

Старый 20.10.2014, 17:01
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 6  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
Если честно не понял вашу мысль.
Создал спрайт-контейнер ( не залитый ) и поместил в него два прямоугольника ( залитых ) и подписал его на событие мыши. На сколько я помню, при mouse_move вне залитых областей событие ловится не будет.
То есть, на залитых прямоугольниках будет, а вне нет.
Код AS3:
var container = new Sprite( );
container.addEventListener( MouseEvent.MOUSE_MOVE, container_mouseMoveHandler );
super.addChild( container );
 
var rect1 = new Sprite( );
rect1.graphics.biginFill( 0x000000 );
rect1.graphics.drawRect( 0, 0, 50, 50 );
rect1.graphics.endFill( );
container.addChild( rect1 );
 
var rect2 = new Sprite( );
rect2.graphics.biginFill( 0x000000 );
rect2.graphics.drawRect( 0, 0, 50, 50 );
rect2.graphics.endFill( );
 
rect2.x = 150;
 
container.addChild( rect2 );

Старый 20.10.2014, 17:10
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Gerbert, ага понял вашу мысль. Конечно, никакое событие мыши не возникнет, если курсор над пустотой (не залитой зоной). И с чего бы этому событию возникать, ведь идёт проверка не по boundsRect спрайта.

Старый 20.10.2014, 17:27
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 8  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
samana, да не возникнет и именно для этого мы подписываем stage на mouse_move?
Что в свою очередь гарантирует работу события везде.
И я это к чему... Вы посоветовали подписать stage на mouse_over и у меня возникло предположение, которое я не могу сейчас проверить, что из-за того, что target stage, событие over станет срабатывать везде. То есть, у меня на сцене те же два прямоугольника, но событие over срабатывает везде.. Нет?

Старый 20.10.2014, 18:02
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Gerbert, что-то я запутался, не могу понять, что вас смущает)
Если вы подпишите stage на mouseOver, то вы всё равно никогда не сможете увидеть результат e.target==stage, так как на stage нельзя ничего нарисовать (graphics (если я не ошибаюсь)) и это событие будут вызывать любые другие объекты, но не stage.
Даже если вы подпишите только документКласс на mouseOver, то это событие словит тоже любой объект, любой вложенности, так как он является потомком документКласса. Поэтому, чтобы узнать имя объекта при наведении на него мыши, не обязательно подписывать stage, достаточно и документКласса.

Старый 20.10.2014, 21:30
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 10  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
samana, и не надо,я проверил и оказалось, что.. Не надо

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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