Просмотр полной версии : При вызове constructor() мы создаем новый экзампляр мувика
sultan_M
13.02.2008, 21:59
Здравствуйте!
кое-что странное появилось у меня в проекте!
На главной сцене лежит MovieClip с названием "ipod_mc". Написав следующий код на первом кадре, я вызвал какой-то странный класс "coverIPod_mc_1"!
var inst:MovieClip = new ipod_mc.constructor ( );
inst.x = inst.y = 100;
addChild ( inst );
trace ( inst.constructor ); // [class coverIPod_mc_1]
Неужеле я вызвал класс из библиотеки! :eek:
Вот Вам мой проект, объясните мне пожалуйста, только не кричите, я новый :)
BlooDHounD
13.02.2008, 22:12
а как вы раньше создавали класс из библиотеки?
sultan_M
13.02.2008, 22:36
BlooDHounD! Я не создавал. Он сам создается флеш-проигрывателем. Вопрос здесь как он создается и когда? Потому что я попробовал создать экзампляры для других символов в дрогом проекте, ничего не получилось! экзампляр создается только нашим знакомым классом MovieClip, а изображать его на сцене с помощью метода addChild НЕЛЬЗЯ!!!
Для каждого кастомного клипа в CS3 создается класс.
sultan_M
14.02.2008, 00:34
__etc! Спасибо за внимание. Обычно для символов, лежащих в библиотеке, создается MovieClip Class, а у меня - coverIPod_mc_1! Я Открыл новый проект, нарисовал квадрат на главной сцене и превратил его в MovieClip. Пытался создать от него экзампляр с помощью его конструктора, всё произошло успешно, он у меня уже создан, его класс - MovieClip. Но не мог отображать его на сцене, может потому что его класс является именно MovieClip'ом. В моем 1-ом вышеуказанном проекте я мог его отобразить на сцене. Меня удивляет почему во всех проектах экзампляры создаются классом MovieClip, а в этом - coverIPod_mc_1?
Ну как минимум потому что вложенные клипы имеют имена.
sultan_M
14.02.2008, 01:16
Всё.. Я понял в чём секрет, хотя об этом в хедпе не упомянули :D
Весь вопрос заключается в окне редактирования ActionScript
Если Вы хотите программировано создать экзампляры от Ваших любимых мувиков, лежащих в библиотеке, то свойство Linkage в CS3 Вам не поможет :) По крайне мере Вам поможет комментарий! смешно да? :D Сейчас посмотрим:
1. открываем новый проект.
2. Рисуем, например, квадрат.
3. превращаем нарисованный нами квадрат в MovieClip.
4. пищем в 1-ом кадре этого мувика ( квадрат ) любой комментарий ( или любой код, например, stop() ).
5. Возращаемя на нашу главную сцену.
6. Называем наш новый мувик "square_mc".
7. Пишем в 1-ом кадре главной сцене следующий код:
var _mc:MovieClip = new square_mc.constructor ( ); // Create instance of square_mc
addChild ( _mc );
trace ( square_mc.constructor ); // [class Symbol1_1] - У нас появился новый класс! ( спасибо флеш-плеер )
var _mc2:MovieClip = new Symbol1_1 ( );
_mc2.x = _mc2.y = 150;
addChild ( _mc2 )
Вот и всё :yahoo:
«Спасибо» тут точно явно лишнее, из-за самодеятельности компилятора CS3 он попросту непригоден для использования.
BlooDHounD
14.02.2008, 01:52
а линкейдж вам чем не угодил?
sultan_M
14.02.2008, 02:14
__etc! пригоден для сокращения кода:
// вместо
var _mc:MovieClip = new square_mc.constructor ( );
// пишем просто название символа в библиотеке + _1
// Новый класс уже в наших руках с того момента как
// притачили символ из библиотеки
var _mc:MovieClip = new Symbol1_1 ( )
BlooDHounD! Конечно угождает! Только здесь мы обошлись без него ( без класса ).
Хотя всё, что было указанно может Вам кажется мелочью, но может пригодиться когда-нибудь.
Желаю Вам удачи
Только здесь мы обошлись без него ( без класса ).
Да не обошлись, класс создается без вашего участия. А когда что-либо создается без вашего контроля — это плохой знак.
А у меня чёта не пашет...
Есть в библиотеке клип test_1
Я ево ставлю на сцену, а в док.классе пишу var tst:MovieClip=new test_1(), говорит - мол нет такова метода...
Чё не так?
me2, первую страницу прочитайте.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.