Просмотр полной версии : #initclip и инициализация переменных
#initclip
var a=10;
#endinitclip
trace(a);
пишет "undefined"
Что это? Баг или фича?
Не баг и не фича. Цель какая?
выполнить инициализацию переменных до обращения к ним из другого мувика, и чтоб переменным не присваивались исходные значения каждый раз при переходе на 1-й кадр
#initclip
function Test() {
}
Test.prototype = new MovieClip();
Object.registerClass("libTest",Test);
Test.prototype.a = 10;
#endinitclip
trace(a);libTest - это linkage символа в библиотеки
Спасибо.
И почему нельзя было сделать все просто и красиво? Почему через заднее место?..
Так и сделали просто, а ваш вариант как раз и был через одно место.
Там же много всяких возможностей, о которых вы не подумали.
Я вправе был ожидать от директивы с таким названием удобств инициализации свойств и методов клипа, в котором она прописана. На деле я получаю усложнение кода и плохую читаемость.
Назвали бы как-нибудь по-другому... Насколько понимаю, код, заключенный в #initclip..#endinitclip, вообще не имеет привязки к клипу, в котором прописан, и совершенно необязательно должен быть предназначен для инициализации.
Ну придется довольствоваться тем, что то есть.
Там же много всяких возможностей, о которых вы не подумали.
например что-нибудь навскидку?
Это as1 который создавался 10 лет назад. Многие ошибки были учтены и появился as2. Поэтому требовать что-то сейчас уже поздно :)
function Test() {
}Создали класс. С этого момента (с кодом ниже), все экземпляры данного клипа будет иметь не копию кода, а использовать шаблон, что съедает меньше памяти.
Test.prototype = new MovieClip();Сделали его наследником от класса MovieClip, а ведь могли бы и быть и другие классы.
Object.registerClass("libTest",Test);Связали наш класс с символом. Ведь класс мог и не иметь никакого отношения к данному символу.
Test.prototype.a = 10;Создали свойство у всех экземпляров и дали ему начальное значение.
Если бы написали так
Test.a = 10;то свойство было бы статичным, то есть его значение во всех клипах данного класса было бы одинаковым при изменение.
Теперь вы можете создать еще один клип, дать ему linkage libTest2 и связать с уже созданным классом
#initclip
Object.registerClass("libTest2",Test);
#endinitclip
trace(this.a);
не описывая все повторно.
блин, пришлось без инитклипа обходиться
слишком мудрено получается и onEnterFrame не запустишь
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.