Форум 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 Кб, 39 просмотров)

Старый 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 - не будет перекрывать только лежащее внутри контейнера для курсора)
-------Другие вещи, которые не должны перекрывать то что лежит в главном контейнере

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

Регистрация: Jun 2009
Сообщений: 56
Цитата:
Сообщение от expl Посмотреть сообщение
mouseEnabled и mouseChildren такие подлые штуки, что отключают мышь только в рамках конейнера.
Т.е. если A и B лежат в C и B перекрывает A - то выставление B.mouseEnabled = false и B.mouseChildren = false сделает прозрачным B для A, но никак перекрыть те спрайты, что лежать вне C!
Спасибо большое вам за информацию. Долго ломал голову .) Подскажите, где вы нашли описание этого?

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

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

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


 


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


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