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

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

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

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
По умолчанию Подписаться на событие не зная класса, генерирующего событие

Сабж. Возможно ли такое? В книге Мука такой пример:

Console class
Код:
// The Console class (registers a listener for the event)
package {
	
	import flash.display.*;
	import flash.events.*;
	
	public class Console extends Sprite {
	
		// Constructor
		public function Console () {
			var game:Game = new Game();
			game.addEventListener(Game.GAME_OVER, gameOverListener);
		}
		
		private function gameOverListener (e:Event):void {
			trace("The game has ended!");
			// Display "back to console" UI (code not shown)
		}
	}
}
Game class
Код:
// The Game class (the event target)
package {
	
	import flash.events.*;
	import flash.utils.*; // Required for the Timer class
	
	public class Game extends EventDispatcher {
		
		public static const GAME_OVER:String = "gameOver";
		
		public function Game () {
			// Force the game to end after one second
			var timer:Timer = new Timer(1000, 1);
			timer.addEventListener(TimerEvent.TIMER, timerListener);
			timer.start();
			// A nested function that is executed one second after this object
			// is created
			function timerListener (e:TimerEvent):void {
				endGame();
			}
		}
		private function endGame ():void {
			// Perform game-ending duties (code not shown)...
			// ...then ask ActionScript to dispatch an event indicating that
			// the game is over
			dispatchEvent(new Event(Game.GAME_OVER));
		}
	}
}
тут в Console мы создаем экземпляр Game и только после этого подписываемся. А как подписаться без ссылки на класс?
Спасибо.
__________________
smival.com

Старый 18.01.2008, 15:50
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 2  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
ну так подписываем то кого? объект типа экземпляр.
имя класса этого объекта зачем вам?

Старый 18.01.2008, 16:27
$mival вне форума Посмотреть профиль Отправить личное сообщение для $mival Найти все сообщения от $mival
  № 3  
Ответить с цитированием
$mival
 
Аватар для $mival

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
не совсем понял, можно кодом?
__________________
smival.com

Старый 18.01.2008, 16:46
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
вот вы подписываете объект game на событие типа Game.GAME_OVER
Код:
game.addEventListener(Game.GAME_OVER, gameOverListener);
для этого вы имя класса, генерирующего событие, используете только для доступа к типу события - Game.GAME_OVER. это по сути просто строка. можно было записать просто так скажем
Код:
game.addEventListener('gameOver', gameOverListener);
просто принято обращаться к типам событий через статические константы, чтобы не ошибиться в этом имени события.. а то написали бы 'gameOvr' и никогда бы не сработал обработчик..

так что главное знать тип события. а он может лежать как в классе, генерирующим событие(как в этом примере), а может быть каким-то отдельным кастомным событием.. например
Код:
game.addEventListener(GameEvent.GAME_OVER, gameOverListener);
посмотрите как делать кастомные события

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

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
это понятно,так и будет в дальнейшем, сейчас рассматриваем простейший пример.
Есть к примеру третий класс, который ничего не знает про эти 2
Возможно ли его подписать на "gameOver"?
__________________
smival.com

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
дубль два. подписываем класс или всё-таки объект?

Цитата:
Сообщение от fljot
ну так подписываем то кого? объект типа экземпляр.

Старый 18.01.2008, 17:26
$mival вне форума Посмотреть профиль Отправить личное сообщение для $mival Найти все сообщения от $mival
  № 7  
Ответить с цитированием
$mival
 
Аватар для $mival

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
класс
__________________
smival.com

Старый 18.01.2008, 17:38
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 8  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
ну дубль три. тот же вопрос. ответ я уже два раза писал)

http://livedocs.adobe.com/flash/9.0/...EventListener()
Цитата:
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event. You can register event listeners on all nodes in the display list for a specific type of event, phase, and priority.

Старый 18.01.2008, 17:47
$mival вне форума Посмотреть профиль Отправить личное сообщение для $mival Найти все сообщения от $mival
  № 9  
Ответить с цитированием
$mival
 
Аватар для $mival

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
спасибо, хелп у меня есть.
тоесть ответ на мой вопрос - нет ?

зы: извините, но в пятницу вечером особо туго соображается
__________________
smival.com

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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
не имея ссылки на объект вообще ничего с ним сделать нельзя. у вас флэш умеет читать Ваши мысли делать то что вы ему не прописывали?

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

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

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


 


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


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