PDA

Просмотр полной версии : Не могу удалить созданный мною объект


Mideon
15.09.2007, 11:23
Проблема следующего характера.
Создаю класс в котором будут храниться данные.

class TimeUnitStruct
{
public var currentTUNumber:Number;
public var curType:String;
public var curDuration:Number;
public var cachNumLayers:Array = [];
public var cachLayers:Array = [];
public var cachFiles:Array = [];
public var thumbImages:String;
public var maxImage:String;
public var innerAudio:String;
public var clipAudioVoice:Boolean;
public var innerAudioType:String;
public var masterVolume :Number;
public var transitionType:String;
public var transitionFile:String;

public function TimeUnitStruct()
{

}
}


После создания объекта этого класса. Я пытаюсь удалить этот объект.

import TimeUnitStruct;
class TestTimeUnitStruct extends MovieClip {

public function TestTimeUnitStruct() {
super();
var tu:TimeUnitStruct = new TimeUnitStruct();
trace("Object TU? "+tu);
trace("DELETE TU: "+delete tu);

}

}

Но он не удаляется.

В ответ возвращается

Object TU? [object Object]
DELETE TU: false

Может кто знает в чем проблема?

iNils
15.09.2007, 15:04
А зачем вы пытаетесь удалить объект, время жизни которого ограничено временем выполнения конструктора TestTimeUnitStruct?
Вынесите var tu:TimeUnitStruct за пределы конструктора, объявив это в классе и удаляйте потом.

etc
15.09.2007, 15:09
Да, и напоследок: не объявляйте массивы вне конструктора или методов. Иначе потом глюков будет море.

†‡Paladin‡†
15.09.2007, 21:53
Да, и напоследок: не объявляйте массивы вне конструктора или методов. Иначе потом глюков будет море.
Подробней можно?

silin
15.09.2007, 23:58
инициализация массива (вообще любого не примитивного типа) вне конструктора или методов приводит к тому, что он попадает в prototype, а не в экземпляр, в результате все экземпляры несут ссылку на один и тот же объект, вместо своего собственного..
подробнее здесь (http://osflash.org/flashcoders/as2)