Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как обратится к изображению в .fla? (http://www.flasher.ru/forum/showthread.php?t=145715)

cucumber007 17.10.2010 15:49

Как обратится к изображению в .fla?
 
Я только начинаю учить AS3, есть вопрос. Вот я кодю в Адоб Флеш ЦС3. Там я могу писать код AS3 в .as файлах, а рисовать фигурки и др. - в .fla Скажите, плиз, как я могу обратится к созданному в проге, допустим, прямоугольнику, через код в .as?

КорДум 17.10.2010 15:52

Делаете символ в библиотеке, даете ему класс, затем в коде создаете экземпляр этого класса и добавляете на сцену через addChild. Основы.

zhoran 14.12.2010 04:51

Не понимаю, как отрисовать символ из библиотеки
 
Здравствуйте, обчитался уже сегодня на форуме, но не смог найти ответа на тот же вопрос, что у топикстартера. И ответ не понял (

Пожалуйста поясните.

Вот есть у меня библиотека cardlibrary. В ней нужные мне изображения игральных карт.

1) могу я увидеть ее содержимое в FD? Как? Или только в Flash IDE?
2) В Flash IDE когда я ее открываю вижу список примерно такой:
#ace
#eight
...
#two
...
clubs - 02
clubs - 03
...
clubs - king
...

Это имена символов? Или вот это object.to_string ?
3) Если я допустим кликаю правой клавишей на clubs - 03 и выбираю Properties, то вижу внизу неактивную кнопку Symbol и справа пояснение Symbol name: c8 copy - это что такое?
4) Как я могу узнать имя класса для этого символа clubs - 03 - где посмотреть?
5) Я хочу написать флеш браузерный клиент карточной игры. Вот для кода я буду использовать FD, рисовать кнопки, стол, аватаров игроков, етс, я смогу в стандалон граф редакторе. А вот запихнуть эту графу и еще звуки смогу я в FD, или мне все же понадобится для это Flash IDE?
6) Чтобы библиотека стала доступной надо не только поместить ее в lib, но и поместить lib в source path в настройках проекта? Этого достаточно? или нужно еще что-то импортить?
7) Если надо импортить, то как узнать имя библиотеки
8) Как узнать какие в библиотеке пакеджи?

читаю Мука, прочел также все посты с 20 стр. выдачи поиска, узнал много нужного, но с этими вопросами никак не могу разобраться. Пожалуйста помогите!

КорДум 14.12.2010 10:05

1. Ваша библиотека - пустышка. Нужно к каждой карте прилинковать в пропертях класс. Затем зайти в настройки публикации, в разделе Flash отметить галочкой Export SWC. Затем просто скомпилировать флешку. На выходе будут swf и swc. Вам нужен последний, кидаем его в проект FD, в папку lib, пр.кн. по ней - add to the lib (или как-то так).
2. Это имена символов, причем даже не символов, а графики.
3. черт знает.
4. Как я и сказал выше - у вашей графики нет классов.
5. Рисовать во FlashIDE -> swc -> FD, как я описал выше.
6. Только поместить в lib и отметить в контекстном меню, как я описал выше.
7. Чего-чего?
8. FD сам подскажет.

zhoran 14.12.2010 15:36

Вложений: 2
Спасибо за ответы!
Но не получается ни установить класс для символов, ни выбрать SWC в настройках экспорта.
Попробуйте сами, у вас на этой библиотеке получается?
У меня почему-то неактивны чекбоксы "export SWC" и "Класс". Пробовал ставить крыжи в разные соседние чекбоксы, думал, что это может активировать нужные мне чекбоксы, но увы.
Как это можно побороть?

КорДум 14.12.2010 15:45

Первый скрин: выбран язык не той версии сверху.
Второй скрин: выбран язык не той версии, а значит нельзя задать класс.
И да, а разве можно задавать графике класс?

samana 14.12.2010 15:46

1) скрин - выберите flash player не ниже 9 версии, и ActionScript - 3.0
2) скрин - вы не поставили флаг - Export for ActionScript

не успел )

zhoran 14.12.2010 16:16

Вложений: 1
Спасибо, получилось!
Отметил для экспорта два изображения. При импорте swc в FD в дереве открывается узел cardlibrary.swc и в нем два класса, но имена у них вроде не кошерные. Их нужно менять для каждого изображения в fla и потом снова экспортировать?

Есть возможность скопом отметить в fla все 54 изображения для экспорта, или придется топать на каждое и отмечать в пропертях по отдельности?

КорДум 14.12.2010 16:28

Не понял ваш вопрос. Но на вашем примере: в библиотеке у вас дофига графики. Черт знает, наверно, это Shape. Так вот, дайте им вменяемые имена с Большой Буквы, затем поставьте галочки для экспорта в ActionScript. Вменяемые имена классов с большой буквы автоматически подставятся в поле Класс. Как сделали для всех своих карт такую штуку - компилируем флешку, получаем на выходе swc с вашими картами, достучаться к которым можно через те самые их классы:
Код AS3:

var card1:MovieClip = new Card1(); 
// насчет MovieClip сомневаюсь

Если требуется каждой карте дать какие-то паблик свойства, создаем новый класс, расширенный от класса карты и пишем код в нем. Вроде понятно объяснил.
Следует эту тему прикрепить сверху в этом разделе...

zhoran 14.12.2010 18:29

Спасибо! я понял )

зы
В свойствах Символа поле Export for ActionScript останется неактивным, если в поле Type - значение Graphic.
Чтобы активировать чекбокс Export for ActionScript надо выбрать значение Type: Movie Clip.
При этом также активируется поле Class

Добавлено через 2 часа 26 минут
Получилось, но но не до конца.
Сделал как советовали: В fla библиотеке символ Table2.png отметил для экспорта с именем класса TablePng, BaseClass: flash.display.BitmapData - так эти свойства заполнились автоматом когда я драгдропнул на список символов fla библиотеки png файл Table2.png

В FD в дереве я вижу класс TablePng, наследующий от flash.display.BitmapData

У себя в проекте создаю файл Table.as в котором:
Код AS3:

public class Table extends TablePng {
    ...
}

Чтобы отрисовать его выполняю:
Код AS3:

table = new Table(...параметры)
addChild(table)

на это ругается на вторую строку так:
C:\flash\projects\PokerClient\src\Main.as(34): col: 13 Error: Implicit coercion of a value of type holdem:Table to an unrelated type flash.display:DisplayObject.

а если пишу так
Код AS3:

table = new Table(...параметры) as DisplayObject
addChild(table)

то на это ругается на обе строки так:
C:\flash\projects\PokerClient\src\Main.as(33): col: 16 Error: Implicit coercion of a value of type flash.display:DisplayObject to an unrelated type holdem:Table.
C:\flash\projects\PokerClient\src\Main.as(34): col: 13 Error: Implicit coercion of a value of type holdem:Table to an unrelated type flash.display:DisplayObject.

Как это победить?

Добавлено через 4 часа 10 минут
Разобрался!
Оказалось из png файла получается символ типа BimapData - растровый полуфабрикат, который нельзя непосредственно вывести на сцену. Нужно еще из этого полуфабриката создать объект типа Bitmap, который уже можно выводить на сцену.
Ух.

Потому вместо:
Код AS3:

public class Table extends TablePng {
    ...
}

код переделал так:
Код AS3:

public class Table  {
    ...
    public var table_bitmap:Bitmap;
    public function Table(...):void
    {
        ...
        this.table_bitmap = new Bitmap(new TablePng);
    }
}
...
addChild(table.table_bitmap)



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

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