Просмотр полной версии : импорт из swc
Дед Анвирыч
09.03.2010, 03:52
Доброго ночи-утра )
столкнулся с такой проблемой:
понадобилось создавать из библиотеки битмапы. Настраиваем в библиотеке экспорт и все как бы работает. но т.к изображений ~250 собирает cs4 swf'ку безбожно долго - больше минуты.
Появилась мысль вынести эти битмапы в отдельный swc, импортнуть и пользоваться.
сказано - сделано )
скомпилял swc, подключил к основному проекту. прописал импорт.
import testbitmapdata
скомпилил. быстро )
Пытаюсь создать объект
trace(new testbitmapdata(0,0))
- борода. нет такого объекта и все.
убрал строчку импорта - ругается при компиляции, что незнает про testbitmapdata.
т.е. явно он его увидел
пробую так
trace(new testbitmapdata())
ругается, что надо 2 параметра.
т.е. все ок - компилятор его видит, но в рантайме этого объекта нет
полез в size report - думал там что полезного увижу. там про testbitmapdata ничего :(
Собственно 2 вопроса
1) как заставить этот обхект создаваться в рантайме?
2) может есть какие-то другие способы чтобы компилять быстрее при большом количестве залинкованных объектов в cs4
Заранее благодарен
TERRORist
09.03.2010, 12:12
не знаю как в дефолтной IDE, а в FlashDevelop импорт не нужно писать. просто trace(new myclass(params))
Дед Анвирыч
09.03.2010, 13:30
Да и черт бы чей с ним, с импортом )
главное чтоб в рантайме классы были доступны
А в чем компилится основной проект?
chabapok
09.03.2010, 14:03
Как подключали swc к основному проекту?
в настройках публикации есть парамтры и там можно указать внешние библиотеки. Причем там указать можно 2мя способами
1. путь к библиотеке
2. путь к ВНЕШНЕЙ библиотеке.
так вот если сделать способом 2 -- работать не будет. (непонятно вообще зачем оно)
и еще советовали, чтобы картинкам не просто класс, а и имя пакета было присвоено. То есть там где as3 class пишите mypictures.pictA
При импорте, соответственно, тоже.
Дед Анвирыч
09.03.2010, 15:44
ДА! пункт 1 помог :) Спасибо.
Но возник новый геморрой
getDefinitionByName('testbitmapdata');
возвращает null
причем хоть с именем пакета указывать имя, хоть без
А Вы его(её?) загрузили в ApplicationDomain.currentDomain, чтобы спрашивать как getDefinitionByName? Нет. И не загрузите.
Давайте разделять понятия compile- и run-time.
Дед Анвирыч
10.03.2010, 00:57
эээ... ну если он скомпилился и создается как
new testbitmapdata();
неужели его по имени создать нельзя? :(
тогда вся прелесть этого дела пропадает :(
Эм... два параметра, которые он хочет - это ширина и высота той битмапы, которая у вас должна получится... типа, они обязательные... По крайней мере сталкивался с таким поведением.
Дед Анвирыч
10.03.2010, 01:06
С параметрами вопрос решен установкой базового класса с конструктором без параметров, это не беда :)
Эм... два параметра, которые он хочет - это ширина и высота той битмапы, которая у вас должна получится... типа, они обязательные... По крайней мере сталкивался с таким поведением.
Сам кэп с нами!
Нормальный ответ. Другой вопрос зачем адобовцы оставили эти параметры в конструкторе? Они ведь ни на что не влияют... Я одно время очень с этим парился - создавал через jsfl xml в котором записывал размеры битмап - уже вложенных в swf. пока не понял что эти параметры не нужны.))))) Очень нехилый ввод в заблуждение.
Добавлено через 7 минут
1) как заставить этот обхект создаваться в рантайме?
А вы уверены что вам нужен именно и swc и рантайм?
Для включения всех классов swc в FD установите галочку на библиотеке как Included library, чтобы в итоговый swf попали все классы а не только вызываемые явно через new. как делать в недоИде CSx не знаю.
Дед Анвирыч
10.03.2010, 11:40
Мне нужно ускорить компиляцию. 250 битмапов с экспортом в as тормозят сборку до минуты с лишним. если есть какие-то альтернативные методы - буду благодарен, если про них расскажут. Естественно разговор о получении 1 swf на выходе.
Есть вариант доверить сборку DeepBlue. Но на хабре за идею меня заминусуют )
Дед Анвирыч
12.03.2010, 09:49
DeepBlue это вроде шахматный копм )
если не разобрались объясню ещё раз:
вы создаёте внешнюю swc с набором классов.
если библиотека присоеденена к проекту, то при компиляции основного
swf в него попадают только классы присутствующие явно в коде как new SWCClass();
для того чтобы использовать конструкцию
getDefinitionByName(className) - надо чтобы в итоговую swf классы с className тоже попали.
Для этого нужно установить в опциях подключения библиотеки - "внедрить полностью". в FD - это Included Library (include completely)
как это делается в других IDE не знаю, но наверняка нечто похожее есть..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.