Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Привязка символа из swc в FD (http://www.flasher.ru/forum/showthread.php?t=143180)

Anddrey 09.08.2010 19:50

Привязка символа из swc в FD
 
FD ver 3.2.2
Flash CS4

Есть fla в котором есть символы.Эти символы по Linkage привязаны к классам.
Один из символов связан с классом controlpanel.CP_cell что прописано в св-вах символа ,linkage, class
Во fla, в св-вах документа Class указывает на Main.as
В Main.as при инициализации стоит
Код AS3:

cp_cell_mc = new CP_cell();
stage.addChildAt(cp_cell_mc, 1);

Компилирую через flash ide
Все работает, изображение для класса CP_cell появляется и код класса работает.
Далее выделяю в библиотеке символ CP_cell,по правой мыши делаю экспорт в cpcell_lib.swc.
Этот swc добавляю в папку lib для FD.На этом файле ставлю галочку Add To Library.
Компилирую проект в FD, ошибок нет, но и символ CP_cell не появляется на сцене !
Пробую в классе CP_cell
Код AS3:

[Embed(source='../cpcell_lib.swc', symbol='controlpanel.CP_cell')]
 public function  CP_cell() {               
        //.....
 }

А так нельзя, пишет:
\CP_cell.as(29): col: 1: Error: Embed is only supported on classes and member variables.
Убираю эмбедед, компилирует без ошибок, но символ не отображается!!!
В чем проблема?Как привязать символ из swc к классу?

wvxvw 09.08.2010 20:22

Если вы его уже скомпилировали, то зачем вы пытаетесь его еще раз перелинковать? В сообщении однозначно сказано, что [embed] нельзя использовать с функциями - я вообще не понимаю, что этой структурой вы хотели сделать...

ЗЫ. За подчерки в названиях, так как вы их понараставляли, как правило хочется сделать автору что-то плохое. Вы где-нибудь видели в флешевых классах хоть один подчерк?

Anddrey 10.08.2010 12:41

Опять по сути ответа нет.
Почему уважаемый "wvxvw" так и хочет сделать автору что-то плохое,а по сути помочь не хочет? Я понимаю если человек может что то по сути вопроса ответить он поможет обязательно.А если хочется показать свое превосходство или незнание,то обязательно "сьезжает с темы вопроса". В данном контексте абсолютно неважно есть ли подчерки в классах или нет,важно что символ из swc не связывается с классом.Почему - непонятно.Если кто сталкивался,как лечили?

Bgg 10.08.2010 13:02

Anddrey, ошибаетесь, wvxvw очень добрый и обычно разжевывает все до нельзя.

У вас
Код AS3:

public function  CP_cell() {

- это конструктор что ли? Никаких embed не надо. Залинкуйте в библиотеке какой нибудь символ(CP_cellSWC) и наследуйте от него.
Код AS3:

public class CP_cell extends CP_cellSWC {
...
//а потом уже
var cp_cell_mc:CP_cell = new CP_cell();
stage.addChildAt(cp_cell_mc, 1);


Anddrey 10.08.2010 13:19

Так, это уже по делу совет.
Да, именно конструктор надо связать.Я знаю что embed привязывается внутри класса, а как сам класс связать?
Пробую.Расширяю конструктор, получаю...

col: 15 Error: Circular type reference was detected in CP_cell.

У меня в swc имеет название symbol='controlpanel.CP_cell'

[

Bgg 10.08.2010 13:37

Цитата:

Сообщение от Anddrey (Сообщение 928080)
У меня в swc имеет название symbol='controlpanel.CP_cell'

Точку уберите и покажи код класса CP_cell. Должно быть что то вроде:
Код AS3:

package  
{
        public class CP_cell extends controlpanelCP_cell
        {
        //...
        }
}


i.o. 10.08.2010 13:39

Цитата:

Расширяю конструктор...
Что, что, простите? ;)

Вероято вам нужно что-то наподобие этого:
Код AS3:

package
{
        import flash.display.Sprite;
 
        [Embed(source="library.swf", symbol="Star")]
        public class Star extends Sprite
        {
                public function Star()
                {
                }
        }
}


Anddrey 10.08.2010 13:49

Да, только не swf а из swc

Anddrey 10.08.2010 13:51

Вложений: 1
Вот скрины, последовательность действий, где тут ошибка?

i.o. 10.08.2010 14:26

Цитата:

Да, только не swf а из swc
Тогда так:
Код AS3:

package
{
        import flash.display.Sprite;
 
        [Embed(source="library.swc", symbol="Star")]
        public class Star extends Sprite
        {
                public function Star()
                {
                }
        }
}

Вы что вообще хотите то? Добавить на сцену из SWC символ "CP_cell"? Если так, то напишите
Код AS3:

addChild( new CP_cell() );

А вообще, дали бы вы нормальные имена классам и символам, а то там путаница. В одном месте класс CPcell, потом класс CP_cell расширенный от CPcell. Имя у символа тоже CP_cell, но вот на скрине внутренностей swc, там почему то видно что в ней и символ и класс с именем "CPcell". А куда же пропал симвом с linkage'м и именем "CP_cell"??
Вы уж определитесь что внутри swc должно быть. И имена символов тогда начинайте с маленькой буквы, а не с большой, чтобы можно было понять класс это или экземпляр класса.


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

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