Кто-нибудь знает какие-либо библиотеки или инструменты для импорта SVG-файла в ActionScript на лету? Мне нужно иметь возможность импортировать SVG-файл во флэш и преобразовать его в мувиклип или предпочтительно в плоский трехмерный объект. Конечной целью здесь является реализация векторного файла с дополненной реальностью.Actionscript 3 - Импортировать файл SVG
ответ
Огромную библиотеку для этого можно скачать здесь: http://code.google.com/p/as3svgrendererlib/ Легко реализовать и надежно. Обратите внимание, что есть два способа реализовать код. Я предпочитаю следующее, потому что это дает вам больше контроля:
private function loadSVG(url:String):void {
ProcessExecutor.instance.initialize(stage);
ProcessExecutor.instance.percentFrameProcessingTime = 0.9;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, svgLoaded, false, 0, true);
try {
loader.load(new URLRequest(url));
} catch (error:Error) {
trace(error);
}
}
private function svgLoaded(e:Event):void {
var svgString:String = loader.data as String;
var svgDocument:SVGDocument = new SVGDocument();
svgDocument.parse(svgString);
this.addChild(svgDocument);
}
Другой путь короче и может быть путь, когда вы только загрузить небольшой SVG или только некоторые.
public function loadSVG(url:String) {
ProcessExecutor.instance.initialize(stage);
ProcessExecutor.instance.percentFrameProcessingTime = 0.9;
var svgDocument:SVGDocument = new SVGDocument();
svgDocument.load(url);
addChild(svgDocument);
}
Два важных замечания: 1. я никак не мог быть в состоянии захватить ширину или высоту SVGs и родительский Sprite имел ширину и высоту 0 после загрузки SVG. Я решил это, сделав все SVG одинаковым размером, прежде чем загружать их в AS3. После этого я знал размеры, которые я использовал ScaleX и scaleY для изменения размера загруженных SVG. 2. Эта сцена должна существовать, прежде чем вы сможете использовать этот код. добавив следующий код, убедитесь, что вы не столкнетесь с проблемами: yourDisplayClass.addEventListener(Event.ADDED_TO_STAGE, loadYourSVGs);
Теперь, как вы преобразовываете это в плоский трехмерный объект, зависит от вашей 3D-библиотеки. Я работал с Away3D, где вы можете использовать bitmapmaterial на вашем Sprite3D. Класс Sprite3D будет объектом использования. Я надеюсь, что ваша 3D-библиотека поддерживает использование MovieClips, чтобы вы могли добавить их в свой 3D-объект. Иначе вам придется использовать для извлечения bitmapMaterial из фрагмента ролика, как я сделал в следующем примере:
public function movieClipToBitmapMaterial(mc:MovieClip):BitmapMaterial {
var bmData:BitmapData = new BitmapData(mc.width, mc.height, true, 0xFFFFFF);
bmData.draw(displayObject);
return new BitmapMaterial(bmData);
}
Ваш вклад в вышеприведенной функции будет мувиклип на Wich вы загрузили ваш SVG.
Я не уверен в этом, но думаю, что с помощью этой функции вы потеряете способность масштабировать столько, сколько хотите, не теряя качества.
Надеюсь, что мой вход был полезен! Удача
PS: не забудьте добавить SWC из ссылки на ваш проект и посмотреть приведенные примеры. Пожалуйста, обратите внимание на отличный комментарий shaunhusain по вашему первоначальному вопросу. Возможно, вам не придется использовать 3D-библиотеку.
Этот код code.google больше не действителен. https://github.com/AndyA/as3svgrendererlib works – Brad
Салам,
Это очень легко:
- Открыть файл "name.svg" в illustartror.
- Сохраните его как "name.ai"
- Импортируйте его на сцену во flash, вот и все.
Это «на лету». Другими словами, через код - не используя редактор. – teynon
- 1. Flash/Actionscript 3 - импортировать/вставлять XML-файл для экспорта?
- 2. Actionscript 3 svg Ошибка анализа XML?
- 3. Невозможно импортировать в ActionScript 3 в FlashDevelop
- 4. Actionscript 3 - Перекрытие пути
- 5. Как импортировать SVG-файл в R?
- 6. Actionscript 3 Json?
- 7. actionscript 2 to actionscript 3
- 8. Actionscript 3 Экспорт в текстовый файл
- 9. Невозможно загрузить html-файл в ActionScript 3
- 10. Целевые основные .as файл в ActionScript 3
- 11. Файл внешней конфигурации в ActionScript 3
- 12. Actionscript 3 и NativeMenus
- 13. actionscript 3 - Ошибка # 2136
- 14. Actionscript 3: Ошибка # 1009
- 15. ActionScript 3 - синтаксис XML?
- 16. Неспособность импортировать класс в ActionScript
- 17. Проблема ActionScript 3
- 18. XML в ActionScript 3
- 19. Actionscript 2 преобразуется в Actionscript 3
- 20. Синтаксис исправления ActionScript-3 в ActionScript-2
- 21. Преобразовать Actionscript 3 до Actionscript 2
- 22. Преобразование скрипта ActionScript 2 в ActionScript 3
- 23. ActionScript 2 - ActionScript 3: общее подмножество?
- 24. Миграция с ActionScript 2 на ActionScript 3
- 25. Как использовать компоненты ActionScript 3/Flash?
- 26. Actionscript 3 не Трассировка
- 27. Actionscript 3 Условный
- 28. Отладка Haxe (ActionScript 3)
- 29. Actionscript 3 addChild Problem
- 30. ActionScript 3 insert image
это чистый проект as3 или flex, если последнее, что я знаю, вы можете сделать это довольно просто с помощью управления изображением, как описано здесь http://raghuonflex.wordpress.com/2009/06/10/loading-svg -content-in-flex-apps/вы также получаете три свойства вращения 2.5D на почти каждом объекте http://www.flepstudio.org/forum/flash-cs4-tutorials/3550-rotationx-rotationy.html – shaunhusain
@ shaunhusain Прямо сейчас это проект ActionScript 3, но при необходимости я могу использовать flex. Хотя я не знаю много о гибке. (Я также не могу позволить себе еще одну IDE на данный момент.У меня есть Adobe Flash CS6, поэтому, если это возможно, я мог бы изучить некоторые учебные пособия для flex.) – teynon
Я верю, что когда вы идете создать новый проект, у вас должна быть возможность сделать его гибким проектом, где он будет включать swcs для вас. У меня были смешанные результаты с svg в Flex, кажется, что fxg работает лучше, поскольку он напрямую переводится в «примитивный» метод рисования во flash. Я не могу найти CS6, но вот поддерживаемые форматы: http://helpx.adobe.com/flash/kb/supported-file-formats-flash-professional.html – shaunhusain