![]() |
contextMenu и mouseEnabled
Проблема:
Если у мувиклипа стоит mouseEnabled=false, то при правом клике мышки его contextMenu игнорируется, а берется root.contextMenu, а не следующего мувиклипа под мышкой, как было бы логично предположить. Ситуация: Есть основной мувиклип со своим курсором, по ROLL_OVER системный мышиный курсор прячется, мой показывается, а при ROLL_OUT наоборот. У моего мышиного курсора стоит mouseEnabled=false иначе сразу срабатывает ROLL_OUT. У основного мувиклипа есть своя меню по правому кнопке мыши. Соответственно при наличии своего курсора мыши это меню не отображается. Решение: Пока вижу только такое: в момент показа своего курсора мыши присвоить root.contextMenu меню от основного мувиклипа. Но это как-то криво. Подскажите другие варианты. |
Что-то мне кажется, что проблема в том, что ты скрыл курсор мыши, а не в contextMenu…
|
Не, курсор мыши тут ни при чем, проверял. Играет роль только то, что у мувика mouseEnabled=false
|
Ты деактивировал поведение мышки у мувика, поэтому берется контекстное меню у мувика, у которого мышка не деактивированна(root в твоем случае)
|
Попробуй курсор мыши юзать внутри твоего клипа.
|
Поправка, берется контекстное меню родителя а не обязательно рута.
Nirth, это-то понятно, вопрос что делать, если хочется и свой курсор и контекстное меню. |
Цитата:
|
Делай общий мувик, в нём курсор и мувик со всем остальным. Маску на вложенный мувик накладывай. А контекстное меню к общему контейнеру вешай.
|
Объясни плиз подробнее, я не могу точно понять, как построить пример.
у тебя есть какой то мувик, в котором курсор заменяется на кастомный? |
Вложений: 1
__etc, угу, как вариант... но тоже не красиво.
Nirth, да, мувик с кастомным курсором и контекстное меню. Пример в аттаче. |
а если юзать MOUSE_OVER\MOUSE_OUT?
Код:
package { |
Код:
import flash.ui.ContextMenu; |
ОФФТОП
а зачем ты во флэше импорты пишешь, там же вроде по умолчанию все импортированно? или я путаю |
Nirth, в вашем примере курсор мыши добавляется внутрь мувика, а значит будет обрезаться, если у мувика будет маска.
__etc, частный вариант, для произвольного мувика не подойдет, но можно сделать контейнер только для мыши, и по mouseOver делать cursor.parent.contextMenu = e.target.contextMenu; Тогда все работает, только в событии MENU_SELECT будут неправильные target, что я переживу. Этот вариант мне подходит. Всем спасибо :) |
Цитата:
|
__etc
я уже думал, а вдруг апдейт сделали, где надо вставлять и может еще че добавили... ну ладно 2 Мерлин Я когда писал думал, что я делаю что то не так, но не мог понять что, догадался когда увидел код etc. В твоем случае я бы сделал некий класс ContextMenuManager, который бы следил за менюшками, и передавал бы ссылки куда надо, так как event.target все равно не даст ссылки на дисплейобжект инициатор, а на ссылку контекстного меню, то кода на много больше всеравно не будет, если я правильно понял. |
| Часовой пояс GMT +4, время: 10:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.