Архитектура Flash и "Ошибка типа: ошибка № 1009:"
Это архитектурный вопрос, который, я надеюсь, решит некоторые проблемы, возникающие из-за большой проблемы с пользовательским интерфейсом, над которой я работаю.
Предыстория: я создаю игровой интерфейс во Flash (используя Flash CC) для использования с Scaleform. Я где-то между маской и в меру знающим; вероятно, достаточно последнего, чтобы быть опасным.
Моя текущая архитектура:
- Родитель: Это будет управлять и создавать все экземпляры пользовательского интерфейса. Он имеет свой собственный файл FLA/SWF.
- Компонент 1: это один из компонентов родительского элемента со своим собственным FLA/SWF-файлом.
- Компонент 2: это еще один компонент родителя с собственным FLA/SWF-файлом.
- Shared HUD Assets: содержит общие элементы для всех элементов (собственный FLA/SWF-файл); он экспортирует все свои символы, и они импортируются в библиотеки соответствующего компонента
- Общие активы: это характерно для всего пользовательского интерфейса (кнопок, фона и т. Д.). Он также экспортирует / импортирует, как активы HUD.
Цель здесь состоит в том, чтобы позволить нескольким типам компонентов быть сохраненными в каждом файле компонентов, причем HUD выбирает, какой из них использовать, и "собирает" HUD. Художники смогут работать с файлами компонентов и ресурсов, не касаясь файла HUD большего размера и не обходясь без кода.
Первоначально я пытался сохранить все ресурсы в главном родительском объекте, но Flash... немного затруднит управление импортированными символами для нескольких макетов. В итоге я получу дубликаты шрифтов, сломанные ссылки и т. Д.
Затем я попытался создать экземпляры, используя чистый AS, то есть "component = new component()" из импортированных файлов AS, но, похоже, у меня возникли проблемы с макетами, созданными в IDE Flash (и не только в AS), которые не были доступны для родителей. (Я предполагаю, что это проблема; возможно, я неправильно читаю некоторых людей, сталкивающихся с подобными проблемами на этом сайте и других.)
Теперь я решил, что загрузка SWF-файлов должна решить эту проблему, но я сталкиваюсь с рядом "TypeError: Error #1009" в этих загруженных SWF-файлах; в частности, кнопка (AnimatedToggleButton), на которую ссылается другой компонент Scaleform (ButtonBar). И он, и ButtonBar импортируются в компонент HUD из общих ресурсов, но AnimatedToggleButton больше нигде не используется. Он правильно экспортирует и импортирует, и работает с момента компиляции в компонент SWF, но при загрузке SWF он выглядит как отсутствующий класс / нуль в родительском объекте. Я перепробовал все обычные трюки, ожидание сцены и т. Д.
Это правильная архитектура для такого рода вещей? И если да, то как обстоят дела с импортированными символами? Разве они не существуют, если не используются?
1 ответ
Вы проверяли "Экспорт в кадре 1" в свойствах символа?
Если нет, то да, только символы, которые появляются на сцене, будут экспортированы и доступны для родительского SWF.