![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
|
Доброго времени суток!
Возможно, этот вопрос уже задавался, но найти ничего не смог. Такой вот вопрос: класс first: package main
{
import flash.display.*;
import flash.events.*;
import main.*;
public class first extends MovieClip
{
public function first():void
{
this.name = "firstMC";
var a:second = new second();
addChild(a);
a.addEventListener(,ef);
}
private function ef(e:Event)
{
trace("I'm:" + this.name);
this.x++;
}
}
}
класс second: package main
{
import flash.display.*;
import flash.events.*;
public class second extends MovieClip
{
public function second():void
{
this.name = "SecondMC";
}
private function ef(e:Event)
{
trace("I'm:" + this.name);
}
}
}
проблема заключается в том,что трейс пишет "FirstMC"Ю хотя я регистрирую слушатель на класс second. Как это понимать? Или, независимо от того,что я написал в "объекте", команда "объект".addEventListener(....) интерпретируется как "addEventListener(....)" и назначается слушатель к объекту, откуда назначается слушатель, т.е. в данном случае объекту типа first? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Код синтаксически неверен.
Названия классов должны начинаться строго с большой буквы. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Просто надо почитать в хелпе что такое this !
|
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
DimG: В as3 в отличие от ас1/ас2, функция сохраняет свой scope, то есть this в теле функции будет всегда указывать на экземпляр класса в котором она определена.
Для твоих целей можно использовать Event#target, Event#currentTarget. Последний раз редактировалось 7thsky™; 06.11.2007 в 13:13. |
|
|||||
|
Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
|
Спасибо!С этим разобрался.Попутный вопрос:
получается,что [object].addEventListener(...,ef) регистрирует слушателем [object],но при этом вызывает фунуцию, являющуюся не методом [object], а методом класса в котором дается команда addEventListner,верно? |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Нефига не понял че ты написал, че и где что регистрирует... Пишу по своему.
Например: Здесь мы подписались на прослушывание события "MouseEvent.CLICK" у объекта myObject. Теперь при возникновении события MouseEvent.CLICK, будет вызвана функция onClick(). |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Цитата:
|
|
|||||
|
Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
|
Спасибо за ответы, очень выручили!
Еще один вопрос: если есть два файла: main.as и Second.as, (main - Document Class, Second обычные класс,наследуются от InteractiveObject), в первом создается объект object:Second, и добавляется листенер посредством команды object.addEventListener(Event.ENTER_FRAME,ef). Теперь к делу: как удалить этот лисэнер, работая в файле Second.as? Нужно использовать ссылку на ф-ию ef относительно данного объекта?Если так, то как ее получить? Объясните, пожалуйста! Заранее благодарен! Последний раз редактировалось DimG; 09.11.2007 в 00:46. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
сделай 3й класс который будет руководить остальными двумя. Это имхо правильней.
|
|
|||||
|
Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
|
Спасибо, так и сделаю. Ну а вообще такое возможно?(удалять лисэнэр посредством передачи команде removeEventListener относительносй ссылки на ф-ию- метод другого класса? )
|
![]() |
![]() |
Часовой пояс GMT +4, время: 04:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|