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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.06.2007, 01:30
Icida вне форума Посмотреть профиль Отправить личное сообщение для Icida Найти все сообщения от Icida
  № 1  
Ответить с цитированием
Icida
[+1.3 08.03.07]
 
Аватар для Icida

Регистрация: Dec 2006
Сообщений: 57
Отправить сообщение для Icida с помощью ICQ
По умолчанию AddEventListner()

Тема скорее всего уже поднималась, но чет поиск мне особо не помог. Буду очень благодарна, если вы мне объясните, в чем разница между
mc.addEventListener('click') и mc.onClick. Первый вариант, насколько я знаю, функциональнее. И еще очень хотелось бы разобраться с этим addEventListener(). Очень хочется почитать что-нибудь на эту тему.

У меня вот возникла такая проблема. Есть класс, в нем описывается поведение некоторых объектов на сцене. В этом классе я хочу присвоить обработчик события мувиклипу, но так,чтобы в функции обработчика события были доступны переменные класса. Т.е. например есть такой код:


Код:
class Test(){

var name;

function Test(){
   this.name = 'my name';
   _root.mc.mc_button.onRelease = this.myFunc;

}


function myFunc(){
   trace(this.name)
}
}
Так вот: в функции myFunc я получаю значение undefined т.к. она является методом объекта mc_button а не объекта класса Test. А мне нужно как раз наоборот А еще мне кажется, что я делаю все как-то уж слишком криво, была бы очень рада, если бы вы подкинули мне какие-нибудь приемы правильной работы с классами и слушателями событий. Вообще, про классы я перерыла немало литературы, но вот, как мне кажется, еще как-то не дошла до правильного их использования...
Заранее спасибо.

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

Регистрация: Sep 2002
Сообщений: 30,787
Для изменения области видимости в «нужную сторону» используется Delegate.
addEventListener — метод, который есть у элементов, проинициализированных EventDispatcher.

Старый 01.07.2007, 16:55
Icida вне форума Посмотреть профиль Отправить личное сообщение для Icida Найти все сообщения от Icida
  № 3  
Ответить с цитированием
Icida
[+1.3 08.03.07]
 
Аватар для Icida

Регистрация: Dec 2006
Сообщений: 57
Отправить сообщение для Icida с помощью ICQ
Что-то совсем плохо. Перерыла кучу доков по addEventListner(). Чет никак у меня не работает в результате закрыла текущий проект, сделала новый. Положила на сцену кнопку и в первый кадр сцены написала код
Код:
myListener = new Object();
myListener.click = function(evt){
    trace(evt.type + " triggered");
}
_root.myButton.addEventListener("click", myListener);
Использую FLASH 8. Что я делаю не так?

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

Регистрация: Sep 2002
Сообщений: 30,787
1) Кнопка должна быть компонентом (стандартным):
2) У неё должно быть Instance Name равное myButton.

Старый 01.07.2007, 18:39
Icida вне форума Посмотреть профиль Отправить личное сообщение для Icida Найти все сообщения от Icida
  № 5  
Ответить с цитированием
Icida
[+1.3 08.03.07]
 
Аватар для Icida

Регистрация: Dec 2006
Сообщений: 57
Отправить сообщение для Icida с помощью ICQ
instance Name есть. А к своим компонентам нельзя это применять? А если я создам свой мувиклип то к нему вообще нельзя addEventListener применять?

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

Регистрация: Sep 2002
Сообщений: 30,787
А это уже нужно рыть в сторону документации EventDispatcher.

Старый 01.07.2007, 21:05
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
import mx.events.EventDispatcher;
//
[Event("onMyEvent")]
class Test extends MovieClip {
	var __mc:MovieClip;
	function Test(){
		__mc = rect(this, 100, 100, 0, 70);
		EventDispatcher.initialize(__mc);
		__mc["addEventListener"]("onMyEvent", this);
		__mc.onRelease = function(){
			this["dispatchEvent"]({type:"onMyEvent"});
		}
	}
	function onMyEvent(){
		trace("native");
	}
	private function rect(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number):MovieClip {
		var mc:MovieClip = _mc.createEmptyMovieClip("child"+_mc.getNextHighestDepth(), _mc.getNextHighestDepth());
		mc.beginFill(c, a);
		mc.moveTo(0, 0);
		mc.lineTo(w, 0);
		mc.lineTo(w, h);
		mc.lineTo(0, h);
		mc.lineTo(0, 0);
		mc.endFill();
		return mc;
	}
}
Код:
comp.onMyEvent = function(){
	trace("me bein overrided!");
}
Но, если честно, то это полный бред и никому не нужно, теоретически не может быть ситуации в которой call и apply не справятся.
__________________
Hell is the possibility of sanity

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

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

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


 


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


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