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

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

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

Регистрация: Mar 2010
Сообщений: 137
По умолчанию "Прозрачность" для событий

У меня есть movieClip, который изображает собой курсор мышки. Под ним могут быть другие movieClip-ы, которые слушают события мыши, но к ним события не доходят из-за того, что курсор всегда вверху.

Как заставить клип курсора пропускать дальше события мышки? Пробовал выключать mouseEnabled для курсора - не помогает.

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Если внутри курсора находятся другие объекты, то попробуйте курсору задать mouseChildren = false. Если нет, то при mouseEnabled = false курсор не должен ловить события мыши. Если он ловит, то покажите код или исходник.

Старый 13.01.2013, 18:03
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 3  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Странно. Вот на таком примере работает:

Код AS3:
var theButton:ButtonWrapper = new ButtonWrapper(new IncreaseButtonMovie());
theButton.x = 100.0;
theButton.y = 100.0;
this.addChild(theButton);
 
var theCursor:MovieClip = new MovieClip();
theCursor.graphics.lineStyle(1.0, 0x00FF00, 1.0);
theCursor.graphics.beginFill(0x0000FF, 0.5);
theCursor.graphics.drawCircle(0.0, 0.0, 50.0);
theCursor.graphics.endFill();
 
theCursor.mouseChildren = false;
theCursor.mouseEnabled = false;
 
this.addChild(theCursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
function mouseMoveListener(ev:MouseEvent)
{
	theCursor.x = ev.stageX;
	theCursor.y = ev.stageY;
}
А в основном коде - дудки.

Добавлено через 42 секунды
Да, тут buttonWrapper:

Код AS3:
package view.buttons
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.events.Event;
 
	public class ButtonWrapper extends MovieClip
	{
		public static const ACTIOIN_EVENT:String = "ActionEvent";
 
		private var _graphic:MovieClip;
 
		public function ButtonWrapper(aGraphic:MovieClip)
		{
			_graphic = aGraphic;			
			this.addChild(aGraphic);
 
			// Animation initialization
			_graphic.gotoAndStop(1);
 
			initEvents();
		}
 
		private function pressed()
		{			
			var theEvent:Event = new Event(ACTIOIN_EVENT);
			this.dispatchEvent(theEvent);
		}
 
		// ***************
		// Initializations
		// ***************
		private function initEvents()
		{
			_graphic.addEventListener(MouseEvent.ROLL_OUT, rollOutHandle);
			_graphic.addEventListener(MouseEvent.ROLL_OVER, rollOverHandle);
			_graphic.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandle);
			_graphic.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandle);
		}
 
		// ********
		// Handlers
		// ********
		private function rollOutHandle(anEvent:MouseEvent)
		{
			_graphic.gotoAndStop(1);
		}
 
		private function rollOverHandle(anEvent:MouseEvent)
		{
			_graphic.gotoAndStop(2);
		}
 
		private function mouseDownHandle(anEvent:MouseEvent)
		{
			this.pressed();
			_graphic.gotoAndStop(3);
		}
 
		private function mouseUpHandle(anEvent:MouseEvent)
		{
			_graphic.gotoAndStop(2);
		}
	}
}

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Дайте .fla файл. По коду непонятно в чем проблема.

Старый 13.01.2013, 19:07
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 5  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Проект во вложении. Там есть такие круглые штуки. Их можно соединять (украдено из InterfaceBuilder-а XCode-а). В классе ConnectionController, метод beginConnectionWithSlot(aSlot:MovieClip) создаётся movieClip, в котором линия соединения рисуется. Если сделать зум, можно заметить, что этот клип перехватывает события, из-за чего не детектиться наведение мышки на кнопку-слот.

В плане архитектуры там хреновато всё, но это не суть важного.
Вложения
Тип файла: rar Modeling.rar (45.9 Кб, 37 просмотров)

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
У меня все работает. "Круглые штуки" соединяются.

Старый 13.01.2013, 19:34
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 7  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Там дело в том, что если увеличить изображение в плеере, можно заметить как "круглая штука" (я её слотом буду дальше называть) не реагирует на наведение мышкой когда поверх неё (слота) находится соединение (зелёная линия). Я подозреваю, что это из-за того, что соединение забирает себе событие наведения мышки и не пускает его дальше.

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Может надо для _connections сделать mouseChildren = false и mouseEnabled = false?

Старый 13.01.2013, 20:43
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 9  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
mouseEnabled и mouseChildren такие подлые штуки, что отключают мышь только в рамках конейнера.
Т.е. если A и B лежат в C и B перекрывает A - то выставление B.mouseEnabled = false и B.mouseChildren = false сделает прозрачным B для A, но никак перекрыть те спрайты, что лежать вне C!

Как быть с курсором? Надо сделать такую структуру всего проекта:
Код:
--Документ-класс
----Главный контейнер
------всякие нужные для игры вещи
------другие вещи
--------другие спрайты, лежащие в других вещах
----Контейнер для курсора с mouseEnabled = false(если на контейнере что-то нарисовано) и mouseChildren = false(для самого курсора)
-------Курсор(если здесь выставлять mouseEnabled = false - не будет перекрывать только лежащее внутри контейнера для курсора)
-------Другие вещи, которые не должны перекрывать то что лежит в главном контейнере

Старый 13.01.2013, 21:52
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 10  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Ясно, expl, спасибо за совет и за инфморацию. Попробую переделать так, как вы сказали.

Цитата:
Может надо для _connections сделать mouseChildren = false и mouseEnabled = false?
Да. В архиве, который залил сюда этого нет. Но я пробовал так всё настроить, ничего не работало.

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

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

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


 


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


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