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

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

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

Регистрация: Aug 2007
Адрес: Украина, Киев
Сообщений: 21
Отправить сообщение для Yuliy с помощью ICQ
По умолчанию Классы и события.

К примеру, есть два класса:

Код:
package 
{
   var vT:T_2 = new T_2(); // содержит экземпляр второго класса
   public class T_1 extends MovieClip
  {
      function T_1() {}
  }
}
и класс T_2:

Код:
package 
{
  public class T_2 extends MovieClip
  {
     function T_2() 
     {
         Movic.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownMovic); 
     }
//--------------------------------------------
// событие происходит если нажали на мувик
//--------------------------------------------
     public function onMouseDownMovic(event:Event):void
     {
	trace("onMouseDownMovic");
     }
  }
}
Событие в нажатия T_2 - происходит. И классу T_1 нужно знать произошло ли оно, чтобы так же выполнить соответствующее действие, например передать результат на Сервер.

Как узнать когда в T_2 событие произошло?

Как вариант можно поставить булевскую переменную в T_2 и постоянно проверять в T_1 - addEventListener(Event.ENTER_FRAME, Update); произошло ли событие или нет. Но это како-то слишком прямолинейный метод, мягко говоря.

Какие ещё есть варианты?

Старый 24.11.2007, 21:48
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
создавать свои события с помощью dispatchEvent и подписывать на них того, кому надо знать
__________________
4am is time to rock

Старый 24.11.2007, 22:15
Yuliy вне форума Посмотреть профиль Отправить личное сообщение для Yuliy Найти все сообщения от Yuliy
  № 3  
Ответить с цитированием
Yuliy

Регистрация: Aug 2007
Адрес: Украина, Киев
Сообщений: 21
Отправить сообщение для Yuliy с помощью ICQ
А можно маленький примерчик - для быстрого усвоения, как это будет выглядеть с этими двумя классами и событием.

Старый 25.11.2007, 00:37
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 4  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
package{
	import flash.display.*;
	import flash.events.Event;
	
	dynamic public class EventExample extends Sprite{
		public function EventExample():void{
			var unit:Unit = new Unit();
			unit.addEventListener(Unit.MOUSE_DOWN, mouse_down_handler)
			
			addChild(unit);
		}
		
		private function mouse_down_handler(e:Event):void{
			trace('event example: mouse down')
		}
	}
}

Код:
package{
	import flash.display.*;
	import flash.events.*;
	
	dynamic public class Unit extends Sprite{
		public static var MOUSE_DOWN:String = 'on_mouse_down';
		
		public function Unit():void{
			addEventListener(MouseEvent.MOUSE_DOWN, mouse_down_handler);
		}
		
		private function mouse_down_handler(e:Event):void{
			trace('unit: mouse down')
			dispatchEvent(new Event(MOUSE_DOWN));
		}
	}
}

Старый 25.11.2007, 04:36
Yuliy вне форума Посмотреть профиль Отправить личное сообщение для Yuliy Найти все сообщения от Yuliy
  № 5  
Ответить с цитированием
Yuliy

Регистрация: Aug 2007
Адрес: Украина, Киев
Сообщений: 21
Отправить сообщение для Yuliy с помощью ICQ
А если EventExample - не содержит экземпляра класса: Unit, можно ли тогда переловить событие?

Старый 25.11.2007, 12:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
MrPoma, статические константы с названиями событий пишутся не так и не в классе, который их посылает, а в наследнике Event.

Старый 25.11.2007, 18:25
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 7  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
package{
	import flash.events.Event;
	
	dynamic public class UnitEvent extends Event{
		public static var MOUSE_DOWN:String = 'on_mouse_down';
		
		public function UnitEvent():void{
			
		}
	}
}
так что ли??

Старый 25.11.2007, 18:31
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Такой ивент вообще не нужен, потому как уже есть такая константа у MouseEvent. И т.к. событие всплывающее, то посылать его второй раз нет смысла.
Значение константы должно быть mouseDown.

Старый 25.11.2007, 22:42
Yuliy вне форума Посмотреть профиль Отправить личное сообщение для Yuliy Найти все сообщения от Yuliy
  № 9  
Ответить с цитированием
Yuliy

Регистрация: Aug 2007
Адрес: Украина, Киев
Сообщений: 21
Отправить сообщение для Yuliy с помощью ICQ
Понятно. Спасибо. Всё получилось.

Старый 26.11.2007, 00:27
Yuliy вне форума Посмотреть профиль Отправить личное сообщение для Yuliy Найти все сообщения от Yuliy
  № 10  
Ответить с цитированием
Yuliy

Регистрация: Aug 2007
Адрес: Украина, Киев
Сообщений: 21
Отправить сообщение для Yuliy с помощью ICQ
я вот тут подумал - от этого dispatchEvent(new Event(MOUSE_DOWN)); - очень мало толку!

Мы объявляем событие в одном классе, а затем это же событие в другом, когда мы можем сделать так:

Код:
// Muvic - это мувик над котрым нажимают
EventExample.unit.Muvic.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
public function onMouseDownAddNewUser(event:Event):void
{
    trace("onMouseDown");
}
То есть объявить это событие в нужном нам классе.

Плюс метода, на который указал DarkLight и списав с хелпа предоставил MrPoma в том, что он поддреживает инкапсуляцию данных.

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

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

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


 


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


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