Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Обращение к объекту, созданному через конструктор класса (http://www.flasher.ru/forum/showthread.php?t=106946)

marat_sa 22.01.2008 14:41

Обращение к объекту, созданному через конструктор класса
 
Здравствуйте! Есть класс InfoWindow, он создает мувиклип в конструкторе класса, т.е. для создания экземпляра класса, надо:
var alrtWnd:InfoWindow = new InfoWindow(parameters, ...);
По сути мы можем создать его (вызвать) в методе какого-либо класса, после чего, его локальные переменные уничтожаются, включая и наш alrtWnd. Ссылка на него потеряется.
Как реализовать уничтожение конкретного экземпляра такого класса?

Вот как выглядит метод closeWindow() класса InfoWindow
Код:

public function closeWindow():Void {
        mcWindow.removeMovieClip();
        delete this;
}

mcWindow как мувик уничтожается (исчезает), а вот delete this не отрабатывает. Почему?

iNils 22.01.2008 14:45

Объект не может удалить сам себя.

marat_sa 22.01.2008 14:53

А как тогда быть?
У меня нет ссылки на созданный объект.
Можно
alrtWnd.closeWindow();
Потом
delete alrtWnd;
Но мы же потеряли ссылку на alrtWnd, после выполнения локального метода, откуда и создавался экземпляр.

iNils 22.01.2008 14:59

closeWindow удалит лишь мувиклип, а мувиклип не является экземляром InfoWindow.

etc 22.01.2008 15:02

А что мешает создавать окно без ссылки?

marat_sa 22.01.2008 15:16

Просто
new InfoWindow(parameters,...);
Eclipse отторгает (MTASC). А как к нему потом обратиться?

etc 22.01.2008 18:12

А зачем вам к нему обращаться?

wvxvw 22.01.2008 18:54

Я в таких случаях делаю менеджеры. Т.е. класс с набором статических методов, который и следит за тем, какое окно сейчас открыто, какое его открыло, какое нужно активировать когда текущее закроется и т.п. Т.е. в случае с алертом принцип действий был бы приблизительно такой: какой-то класс порывается создать алерт --> обращается к менеджеру --> менеджер исходя из своих соображений открывает/закрывает/активирует чего нужно --> создает и регистрирует окно. Дальше, когда окно захочет закрыться, оно опять же обратится к менеджеру, который позаботится о том, чтобы нужное окно было удалено/получило фокус и т.д.


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

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