Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Определение объекта-родителя. (http://www.flasher.ru/forum/showthread.php?t=110506)

Obi 03.04.2008 23:05

Определение объекта-родителя.
 
Код:

var myObj:MyObject = new MyObect();
myObj.container.addEventListener(MouseEvent.CLICK, myFunc);
private function myFunc(e:MouseEvent):void {
  trace(e.target);
}

container — свойство объекта myObj.
Как в функции myFunc получить ссылку на объект myObj ?

alekslitvinenk 04.04.2008 00:33

Вообще-то, переменнцю myObj и так видно в функции myFunc :)
А если container - это DisplayObject, а myObj - DisplayObjectContainer
и container добавлен в DisplayList myObj, то можно так:
Код:


private function myFunc(e:MouseEvent):void {
  trace((e.target.parent as MyObject));
}


Obi 04.04.2008 01:03

Цитата:

Сообщение от alekslitvinenk
Вообще-то, переменнцю myObj и так видно в функции myFunc :)
А если container - это DisplayObject, а myObj - DisplayObjectContainer
и container добавлен в DisplayList myObj, то можно так:
Код:


private function myFunc(e:MouseEvent):void {
  trace((e.target.parent as MyObject));
}


1. Ну вы же понимаете, что если-бы все так просто, и переменную можно было увидеть, проблемы бы не было.
2. container — Sprite;
3. myObj никакого отношения к DisplayObject'ам не имеет.

etc 04.04.2008 01:07

Это невозможно.

ulik 04.04.2008 13:01

Код:

var myObj:MyObject = new MyObect();
myObj.container.addEventListener(MouseEvent.CLICK, myFunc);
private function myFunc(e:MouseEvent):void {
  trace(myObj);
}

В чем собственно проблема?

etc 04.04.2008 13:34

Цитата:

Сообщение от ulik
В чем собственно проблема?

В области видимости, как минимум.

ulik 04.04.2008 13:49

Цитата:

Сообщение от __etc
В области видимости, как минимум.

Код:

import flash.display.Sprite;

var sp1:Sprite=new Sprite();
sp1.name="sp1";
var sp2:Sprite=new Sprite();
sp2.name="sp2";
addChild(sp1);
sp2.addEventListener(Event.ADDED_TO_STAGE, myFunc);
function myFunc(e:Event):void {
        trace(sp1.name);
}
sp1.addChild(sp2);

Так, а все-таки, в чем проблема?

etc 04.04.2008 13:58

Проблема в том, что MyObect — произвольный объект, не DisplayObject и ссылка на него хранится неизвестно где, но точно не в области обработчика. Так яснее?

ulik 04.04.2008 14:07

Тогда яснее. Просто автор не пояснил есть ли extend. Класса-то я не видел.

badun 04.04.2008 15:10

2 ulik: автор пояснил все в ответе alekslitvinenk

2 obj: можно с делегатами поиграться, если подходит такой вариант ))


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

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