Flash as3 определить переменные до или в конструкторе класса? - PullRequest
1 голос
/ 15 декабря 2011

в чем разница между чем-то вроде

package {
    public class Myclass {
        var txt:TextField = new Textfield();

        function Myclass() {

        }

    }

}

и

package {

    public class Myclass {

        var txt:TextField;

        function MyClass() {

            txt = new TextField;
        }
    }
}

Я знаю, что когда вы создаете новый объект, запускается конструктор класса, например:

var object: Myclass = new Myclass ();

2-м способом создается новое TextField.

Моя путаница заключается в том, что, во-первых, когда создается TextField? Будет ли выделена память для TextField, если я импортирую класс в другой класс? Что, если это вместо статической переменной?

1 Ответ

6 голосов
/ 15 декабря 2011

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

Если вы используете статическую переменную, эта переменная будет занимать память, поскольку она не связана с экземпляром объекта, а скорее как глобальная переменная в этом классе.

РЕДАКТИРОВАТЬ: Большое уточнение от pkyeck о том, как наилучшим образом построить и инициализировать объект в комментариях: в коде AS3 внутри конструктора должен быть медленным - поэтому лучше создать метод init () и создать его экземпляр, а также все init () внутри конструктора. Код внутри конструктора не оптимизируется компилятором Just-in-time (JIT). Для использования JIT-оптимизированного кода есть возможность вызвать функцию из конструктора. Код внутри этой функции снова оптимизируется. взяты отсюда: je2050.joa-ebert.com/files/misc/as3opt.pdf - pkyeck

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...