Для проекта, над которым я работаю во Flex, я решил создать несколько отдельных файлов для каждой «темы», которую можно использовать. Поскольку каждая тема может и потребует определенного кода, изображений, стилей и практически всего остального, классический вариант css-only на самом деле был невозможен.
У меня есть одна проблема с этим методом: каждый «дочерний» mxml-файл не может читать переменные и тому подобное, созданные в родительском приложении. Использование Application.application решает половину проблем, но мне кажется, что любое решение с глобальной переменной не работает. И код от этого тоже не становится намного чище.
Я создал класс, который загружается в основное приложение со статической переменной, которую я использовал в качестве AS3-эквивалента глобальных переменных. К сожалению, доступ к нему из этих «дочерних» файлов mxml невозможен, я могу только повторно инициировать класс или написать функцию-оболочку в основном приложении, которое извлекает эти переменные. Это, опять же, далеко не идеально и по-прежнему не оставляет мне достойного способа использования методов из классов, которые были инициированы в родительском приложении.
Как лучше всего заставить это работать?
Краткое изложение приложения:
1) Основное приложение загружает несколько классов / пакетов, инициирует несколько с соответствующими настройками и т. Д. 2) Основное приложение имеет ViewStack, каждая тема которого поступает из внешнего файла (themes / ThemeName.mxml) 3) Каждая тема должна иметь доступ как минимум 2 переменные, установленные основным приложением (с использованием загруженных классов и методов), а некоторым также может потребоваться прямой доступ к определенным функциям, которые должны быть глобально доступны как для основного приложения, так и для конкретной темы mxml.
Надеюсь, мое объяснение немного ясное. Пожалуйста, задавайте любые вопросы, которые могут помочь вам понять это лучше. Большое спасибо заранее!
-Дэйв
Небольшое обновление: для небольшого пояснения: у меня есть класс, который позволяет мне легко создавать вид с камеры. Я инициализирую и использую этот класс в основном приложении, которое затем помещает новый экземпляр (веб) cam (era) в переменную, готовую к использованию в любом месте, где это необходимо. Затем файл представления (themes / theTheme.mxml) отображает 2 камеры любым способом. Я хочу, чтобы файл представления использовал камеры, созданные в основном приложении, чтобы мне не приходилось просить разработчиков темы реализовывать все это снова и снова. Это один из примеров того, зачем мне это нужно.
Спасибо за помощь!