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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.04.2010, 13:44
rain_heart вне форума Посмотреть профиль Отправить личное сообщение для rain_heart Посетить домашнюю страницу rain_heart Найти все сообщения от rain_heart
  № 1  
Ответить с цитированием
rain_heart
 
Аватар для rain_heart

Регистрация: Jun 2007
Адрес: Ukraine/Dnepropetrovsk
Сообщений: 15
Отправить сообщение для rain_heart с помощью ICQ
Post обработка событий измененного объекта

Вобщем есть вот такой скрип, для примера:

Класс MyButton просто создает статичный квадрат
Код AS3:
package  {
	import flash.display.*
	import flash.events.*
 
	public class MyButton extends Sprite {
 
		private var container:Sprite = new Sprite();
		private var button:Shape = new Shape();
 
		public function MyButton() {
			Build();
			addChild(container);
			container.addChild(button);
		}
 
		private function Build() {
			button.graphics.beginFill(0xFF0000, 1);
			button.graphics.drawRect(0, 0,  100, 100);
			button.graphics.endFill();
		}//end function menuBox
	}
}

А вот в этом классе загвоздка.
Код AS3:
package  {
 
	import flash.display.*
	import flash.events.*
	import MyButton;
 
	public class Test extends Sprite {
 
		private var newButton:MyButton;
 
		public function Test() { 
			newButton = new MyButton();
			addChild(newButton);
			newButton.addEventListener(MouseEvent.MOUSE_OVER, onOver);
			newButton.addEventListener(MouseEvent.MOUSE_OUT, onOut);
		}
		private function onOver(e:Event):void {
			var but:MyButton = new MyButton();
			but.y = 100;
			newButton.addChild(but);
			trace('over');
		}
		private function onOut(e:Event):void {
			trace('out')
		}
	}
}
Когда мышка наводится на квадрат, внизу создается 2 квадрат, добавляем его в переменную newButton, но если мышку опустить вниз (ниже первого исходного квадрата), то цыклично вызываются события OnOver и OnOut
Вопрос: Откуда взялось событие OnOut ???

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Вопрос в том, почему Вы считали что оно не должно взятся?

Добавлено через 2 минуты
Цитата:
Код AS3:
var but:MyButton = new MyButton();
but.y = 100;
newButton.addChild(but);//новая кнопка перекрывает старую, у старой возникает событие MOUSE_OUT, оно всплывает до newButton,  и успешно обрабатывается(что вызывает добавления новой кнопки поверх старой и т.д.)
что не так?
__________________
Могу ошибаться... =)


Последний раз редактировалось mickfallout; 27.04.2010 в 14:41.
Старый 27.04.2010, 16:42
rain_heart вне форума Посмотреть профиль Отправить личное сообщение для rain_heart Посетить домашнюю страницу rain_heart Найти все сообщения от rain_heart
  № 3  
Ответить с цитированием
rain_heart
 
Аватар для rain_heart

Регистрация: Jun 2007
Адрес: Ukraine/Dnepropetrovsk
Сообщений: 15
Отправить сообщение для rain_heart с помощью ICQ
Цитата:
Сообщение от mickfallout Посмотреть сообщение
Вопрос в том, почему Вы считали что оно не должно взятся?
эээ. уточняю вопрос.
вот код:
Код AS3:
package  {
 
	import flash.display.*
	import flash.events.*
	import MyButton;
 
	public class Test extends Sprite {
 
		private var newButton1:MyButton;
		private var newButton2:MyButton;
		private var newContainer:Sprite = new Sprite();
 
		public function Test() { 
			newButton1 = new MyButton();
			newButton2 = new MyButton();
			newButton2.alpha = 0.5;
			newButton2.x = 100;
 
			newContainer.addChild(newButton1);//добавить 1 кнопку в контейнер
			newContainer.addChild(newButton2);//добавить 2 кнопку в контейнер
			addChild(newContainer);//добавляем контейнер на страницу
			newContainer.addEventListener(MouseEvent.MOUSE_OVER, onOver);//мыш над контейнером
			newContainer.addEventListener(MouseEvent.MOUSE_OUT, onOut);//мыш в стороне
		}
		private function onOver(e:Event):void {
			trace('over');
		}
		private function onOut(e:Event):void {
			trace('out')
		}
	}
}
Вопрос, я слушаю события контейнера, а получаю как бы события от его потомков ???
Как сделать так чтоб слушать событие контейнера. ну т.е. мыш сверху (не важно над какой кнопкой) - одно событие, мыш в стороне - другое событие?

Старый 27.04.2010, 16:49
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 4  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ROLL_OVER

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Вопрос, я слушаю события контейнера, а получаю как бы события от его потомков ???
ну да. почитайте про всплытие событий...

Добавлено через 1 минуту
Код AS3:
package  {
 
	import flash.display.*
	import flash.events.*
	import MyButton;
 
	public class Main extends Sprite {
 
		private var newButton1:MyButton;
		private var newButton2:MyButton;
		private var newContainer:Sprite = new Sprite();
		private var mouseOnButton1:Boolean;
		private var mouseOnButton2:Boolean;
		public function Main() { 
			super();
			newButton1 = new MyButton();
			newButton2 = new MyButton();
			newButton2.alpha = 0.5;
			newButton2.x = 100;
 
			newContainer.addChild(newButton1);//добавить 1 кнопку в контейнер
			newContainer.addChild(newButton2);//добавить 2 кнопку в контейнер
			addChild(newContainer);//добавляем контейнер на страницу
			newContainer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);//мыш над контейнером
			newContainer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);//мыш в стороне
		}
		private function rollOverHandler(e:Event):void {
				trace('over');
		}
		private function rollOutHandler(e:Event):void {
				trace('out')
		}
	}
}
__________________
Могу ошибаться... =)

Старый 27.04.2010, 16:55
rain_heart вне форума Посмотреть профиль Отправить личное сообщение для rain_heart Посетить домашнюю страницу rain_heart Найти все сообщения от rain_heart
  № 6  
Ответить с цитированием
rain_heart
 
Аватар для rain_heart

Регистрация: Jun 2007
Адрес: Ukraine/Dnepropetrovsk
Сообщений: 15
Отправить сообщение для rain_heart с помощью ICQ
ООО...
это уже называется старческий маразм )) (у меня всмысле)
я за ROLL_OVER и ROLL_OUT совсем и забыл то

Спасибо!!!

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

Теги
AS 3.0 , обработка , события

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

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


 


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


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