Форум 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=80487)

Juice_Green 30.05.2006 12:37

Удаление объекта класса
 
Всем привет!

есть следующий класс:
Код:

class WNotify extends MovieClip{
private var w_clip:MovieClip;  // ссылка на клип
// конструктор
function WNotify(PARENT:MovieClip) {
PARENT.attachMovie("WNotify", "WNotify", PARENT.getNextHighestDepth());
w_clip = PARENT["WNotify"];
_x = 400;
_y = 200;
}

public function deleteObject() {
w_clip.removeMovieClip();
delete this;
}
}

создаю объект в главном фрейме
Код:

var mynotify:WNotify = new WNotify(_root);
А теперь собственно вопрос:
надо удалить объект mynotify
1 вариант) пишу
Код:

delete mynotify;
Результат: сам объект удаляется, а мувик который аттачится в конструкторе - остается

2 вариант) пишу
Код:

mynotify.deleteObject();
Результат: объект не удаляется, а удаляется только мувик созданный

Кто что подскажет, ? мож я где нить ошибку допустил

Nirth 30.05.2006 13:34

либо
Код:

public function deleteObject() {
this.removeMovieClip();
delete this;
}

либо
вместо
Код:

delete mynotify;
пишем
Код:

myntify.removeMovieClip();

Juice_Green 30.05.2006 14:09

Nirth, первое "либо" удаляет только мувик, а созданный объект остается. А второй либо так и не понял, - предлагаешь удалять мувик, а объект оставлять в памяти ?

Nirth 30.05.2006 14:12

не в первом delete тоже можно снести, я его просто забыл удалить.
Код:

createEmptyMovieClip("mc",1);
mc.prop = "a";
trace(mc);
trace(mc.prop);
mc.removeMovieClip();
trace(mc);
trace(mc.prop);

как видишь ремувМувиклип сносит подчистую=)

Nirth 30.05.2006 14:14

Вообще мувиклипы в ActionScript особые объекты их нельзя создавать через конструкторы(ну можно, но эфекта ты не получишь) и нельзя удалть через delete (вернее через delete ты можешь удалить ссылку на мувик, но мувик будет жить и радоватся)

Juice_Green 30.05.2006 14:15

у тебя немножко подругому сделано. Ты мувику назначаешь свойство, а я не объекту класса, в этом же объекте еще и ссылка на мувик

Nirth 30.05.2006 14:16

я сделал пример где показываеться что сноситься и мувик и ссылки в нем
твой Класс наследник MovieClip - class WNotify extends MovieClip{
тоесть к нему применимо все что применимо к MovieClip

toFlash 30.05.2006 14:20

у меня тоже не получилось удалять таким образом как ты говоришь Nirth.
полностью удалить объект выходит тока так:
Код:

mynotify.deleteObject()
delete mynotify;


Juice_Green 30.05.2006 14:26

to Nirth:
то что наследник никто не спорит,
использовал для того - чтобы оперировать со свойствами _x, _y и др. объекта мувиклип ...
а понятие деструктора в AS случаем нет ?

Nirth 30.05.2006 14:54

2 toFlash
а ты меня правильно понял? я говорю что нужно юзать removeMovieClip()

2Juice_Green
увы нету, приходиться писать свой и в ручную вызывать.


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

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