|
|
|||||
Регистрация: Mar 2009
Сообщений: 105
|
Удаление экземпляра класса
Здравствуйте!
Проблема в следующем. Есть класс, в котором создается множество текстовый полей, в соответствии с кол-вом букв строки-параметра strWord. class MyWords extends MovieClip { var strWord:String = null; function MyWords(str:String) { strWord = str; } function DrawWords() { var arr:Array = []; arr = strWord.split(""); //... for (var i = 1; i<arr.length; i++) { _root.createTextField("pole_"+i,-i,dx,dy,10,16*koef); } //... } var inter:Number; var exam:MyWords; var i:Number = 0; var arr:Array = []; arr[0] = "Hello world!!!"; arr[1] = "Hello world!!! Hello world!!! Hello world!!!"; arr[2] = "Hello world!!! Hello world!!!"; arr[3] = "Hello world!!! Hello world!!! Hello world!!!Hello world!!! Hello world!!!"; arr[4] = "Hello!"; inter = setInterval(this, "Print", 2000); function Print() { exam = new MyWords(arr[i]); exam.DrawWords(); i++; if (i==arr.length) { clearInterval(inter); } } Подскажите, пожалуйста, в чем ошибка? Спасибо! Последний раз редактировалось zelik; 16.07.2009 в 01:27. |
|
|||||
.
|
Ошибка в том, что нельзя создавать экземпляры MovieClip оператором new.
А значит, Вы ручками должны удалить мусор, оставшийся в виде TetxField'ов, созданных методом DrawWords. Гы. Вы же их создаете в _root. Так какова лешева они должны бы были удалиться с помощью new? В общем, разговор турка с персом. Последний раз редактировалось dimarik; 16.07.2009 в 01:49. |
|
|||||
@zelik:
и зачем тут наследовываться от MovieClip, объясните уж будьте добры. вы правда используете возможности базового класса? |
|
|||||
Регистрация: Mar 2009
Сообщений: 105
|
да собственно не использую.
раньше вы уже писали, что нет необходимости. А до того написали, как сделать, чтобы код работал. Получается, что, единственное, почему наследую, т.к. код работает Сейчас вот написал без наследования. В классе обявил а затем for (var i = 1; i<arr.length; i++) { container.createTextField("pole_"+i,-i,dx,dy,10,16*koef); } то ничего не отображается?? Почему? Чего-то не понимаю, пожалуйста, объясните. Спасибо! |
|
|||||
вы создаете TextField, а container у вас undefined, для начала создайте контейнер, например с помощью createEmptyMovieClip
|
|
|||||
Регистрация: Mar 2009
Сообщений: 105
|
а создание контейнера делать от this или _root?
Добавлено через 5 минут если делаю от _root, то получается тоже, что описано в 1-м посте... |
|
|||||
все верно,
для удаления храните ссылки на созданные объекты, тогда и сможете удалять созданные уже мувики |
|
|||||
Регистрация: Mar 2009
Сообщений: 105
|
что значит хранить ссылки на объекты? где хранить?
Можно объяснить на примере вот у меня есть свойтсво класса var container:MovieClip = _root.createEmptyMovieClip("container1", _root.getNextHighestDepth()); for (var i = 1; i<arr.length; i++) { container.createTextField("pole_"+i,-i,dx,dy,10,16*koef); } поясните, пожалуйста! |
|
|||||
.
|
Храните в ассоциативном массиве.
|
|
|||||
1. создаем экземпляр
2. сохраняем ссылку в массив 3. когда надо удалить - пробегаем по циклу массив и delete массив[i] 4. в деструкторе класса реализуем удаление мувиклипа со сцены |
Часовой пояс GMT +4, время: 09:12. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|