Форум 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)
-   -   #initclip и инициализация переменных (http://www.flasher.ru/forum/showthread.php?t=138586)

TTS 11.04.2010 16:15

#initclip и инициализация переменных
 
Код:

#initclip
var a=10;
#endinitclip
trace(a);

пишет "undefined"
Что это? Баг или фича?

iNils 11.04.2010 16:33

Не баг и не фича. Цель какая?

TTS 11.04.2010 16:52

выполнить инициализацию переменных до обращения к ним из другого мувика, и чтоб переменным не присваивались исходные значения каждый раз при переходе на 1-й кадр

iNils 11.04.2010 17:00

Код AS1/AS2:

#initclip
function Test() {
}
Test.prototype = new MovieClip();
Object.registerClass("libTest",Test);
Test.prototype.a = 10;
#endinitclip
trace(a);

libTest - это linkage символа в библиотеки

TTS 11.04.2010 17:13

Спасибо.

И почему нельзя было сделать все просто и красиво? Почему через заднее место?..

iNils 11.04.2010 17:48

Так и сделали просто, а ваш вариант как раз и был через одно место.

TTS 11.04.2010 18:26

:mosking:

iNils 11.04.2010 18:30

Там же много всяких возможностей, о которых вы не подумали.

TTS 11.04.2010 18:55

Я вправе был ожидать от директивы с таким названием удобств инициализации свойств и методов клипа, в котором она прописана. На деле я получаю усложнение кода и плохую читаемость.
Назвали бы как-нибудь по-другому... Насколько понимаю, код, заключенный в #initclip..#endinitclip, вообще не имеет привязки к клипу, в котором прописан, и совершенно необязательно должен быть предназначен для инициализации.
Ну придется довольствоваться тем, что то есть.

Цитата:

Сообщение от iNils (Сообщение 899644)
Там же много всяких возможностей, о которых вы не подумали.

например что-нибудь навскидку?

iNils 11.04.2010 19:12

Это as1 который создавался 10 лет назад. Многие ошибки были учтены и появился as2. Поэтому требовать что-то сейчас уже поздно :)
Код:

function Test() {
}

Создали класс. С этого момента (с кодом ниже), все экземпляры данного клипа будет иметь не копию кода, а использовать шаблон, что съедает меньше памяти.
Код:

Test.prototype = new MovieClip();
Сделали его наследником от класса MovieClip, а ведь могли бы и быть и другие классы.
Код:

Object.registerClass("libTest",Test);
Связали наш класс с символом. Ведь класс мог и не иметь никакого отношения к данному символу.
Код:

Test.prototype.a = 10;
Создали свойство у всех экземпляров и дали ему начальное значение.
Если бы написали так
Код:

Test.a = 10;
то свойство было бы статичным, то есть его значение во всех клипах данного класса было бы одинаковым при изменение.

Теперь вы можете создать еще один клип, дать ему linkage libTest2 и связать с уже созданным классом
Код AS1/AS2:

#initclip
Object.registerClass("libTest2",Test);
#endinitclip
trace(this.a);

не описывая все повторно.


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

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