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

island 02.03.2007 07:20

статические свойства классов
 
Есть, например, код:
Код:

class Trash {
       
        public static var n:Number;
       
        public function Trash() {};
       
        public static function init() {
                n = 100;
        }
}

На рут кидаем текстфилд и обзываем его tf.
На основной временной шкале пишем:
Код:

_root.tf.text = Trash.n;
Trash.init();

Как и следует ожидать, выводится undefined. Но если запустить второй раз этот swf, не закрывая проигрыватель, то в tf.text будет 100. То есть статическое свойство присоединилось к _global и при повторном запуске в том же проигрывателе оно уже заранее инициализировано. Так вот это мне очень не нравится. Есть ли способ очищать _global от занесенных туда моих статических свойств? Заранее неизвестно какие там свойства и сколько их.

Tardos Mors 02.03.2007 09:23

Дело в том, что при повторном проигрывании ролика уже созданные переменные никуда не деваются, и поэтому придется удалять их все в ручную. Есть простой способ - все содержимое _root запихать в мувик и чтобы начать проигрывание сначала перезагружать его.

island 02.03.2007 09:59

В том то и дело, что статические свойства записываются не в рут, а "выше" - в глобал. Можно ли перегрузить глобал? :)
У меня есть набор классов, которые в зависимости от значений их статических свойств на момент инициализации ведут себя совершенно по-разному... Мне не хочется в них копаться, отлавливая где какие свойства используются, и каждый раз при запуске ролика сбрасывать все значения статических свойств. Хотелось бы сделать так, чтобы при повторном запуске ролика проигрыватель был бы девственно чист :mosking:

etc 02.03.2007 10:40

Сделать стат. функцию initialize(), которая сбрасывает значения.

island 02.03.2007 11:46

Цитата:

Сообщение от __etc
Сделать стат. функцию initialize(), которая сбрасывает значения.

Для этого мне нужно знать все используемые статические свойства... А если классов вагон, и в процессе работы над проектом будут добавляться другие классы, надо постоянно обновлять функцию initialize(). Интересует именно возможность "рестартнуть" плеер, или убедиться в отсутствии такого механизма.

etc 02.03.2007 12:39

Сей баг наблюдается лишь при тестировании в IDE. Могу лишь посоветовать закрывать окно и делать тест по новой.

island 02.03.2007 13:10

нет, я говорю про swf-файл, открываемый standalone флеш-плеером. А особенность проекта заключается в том, что флеш-плеер подгружается в экзшеник как компонент, а внутри уже рулит swf-ками... Так вот флеш-плеер подгружается один раз, и нет возможности его открывать-закрывать...

etc 02.03.2007 14:03

У тебя класс находится в загружаемом swf?

island 02.03.2007 15:53

да, класс находится в swf-ке... А разве можно по-другому - в готовую swf подгружать класс?

CorC 02.03.2007 17:14

а import на что?


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

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