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

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

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

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

Есть два класса. в первом (ControlManager) создается экземпляр второго(VideoManager), потом по нажатию кнопки из первого посылается событие во второй(соответственно второй предварительно подписывается на это событие). Во втором есть обработчик события, но он не видит своего класса вообще.
ControlManager:


Код:
import mx.events.EventDispatcher;
import mx.utils.Delegate;

import main.VideoManager;

class main.ControlManager extends MovieClip
{
	public var playStatus:Boolean = false; // true - is play
	private var play_b:MovieClip;

	private var vm:VideoManager;
	
	public var addEventListener:Function;
	public var removeEventListener:Function;
	public var dispatchEvent:Function;
	
	public function ControlManager()
	{
		play_b = this["pl"];
		
		EventDispatcher.initialize(this);
		vm = new VideoManager(this);
	}
	
	private function onLoad():Void
	{		
		play_b.onRelease = Delegate.create(this, playHandler);
	}
	
	private function playHandler():Void
	{
		trace("Play/stop нажали");
		playStatus ? play_b.gotoAndStop("play") : play_b.gotoAndStop("pause");
		playstatus = !playStatus;
	}
	
	public function set playstatus(p:Boolean):Void
	{
		playStatus=p;
		dispatchEvent({type:"onPlay",target:this});
	}	
}
VideoManager:

Код:
import mx.events.EventDispatcher;

class main.VideoManager
{
	private var obj:Object;
	
	public function VideoManager(o:Object)
	{
		obj=o;
		configureListeners();
	}
	
	private function configureListeners():Void
	{
		obj.addEventListener("onPlay", playHandler);
	}
	
	private function playHandler(o:Object):Void {o.target.playStatus ? startVideo() : pauseVideo();}
	
	private function startVideo():Void 
	{
		trace("startVideo");
	}
	private function pauseVideo():Void 
	{
		trace("pauseVideo");
	}
}
т.е. по событию мы должны вызывать поочереди то VideoManager.startVideo(), то VideoManager.pauseVideo(), но они почему то недоступны из самого же VideoManager'a
__________________
smival.com

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

Регистрация: Sep 2002
Сообщений: 30,787
В сеттере косяк какой-то. Никогда не используй одинаковые имена, но с разным регистром.

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

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
хорошо. поправил
Код:
...	
	private function playHandler():Void
	{
		trace("Play/stop нажали");
		playStatus ? play_b.gotoAndStop("play") : play_b.gotoAndStop("pause");
		playStatusSetter = !playStatus;
	}
	
	public function set playStatusSetter(p:Boolean):Void
	{
		playStatus=p;
		dispatchEvent({type:"onPlay",target:this});
	}	
}
вопрос это конечно не решило.
__________________
smival.com

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

Регистрация: Sep 2002
Сообщений: 30,787
Код:
obj.addEventListener("onPlay", Delegate.create(this, this.playHandler));

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

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

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

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

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

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

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


 


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


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