对于我正在 Flex 中处理的一个项目,我决定为每个可以使用的“主题”创建几个单独的文件。由于每个主题都需要特定的代码、图像、样式和几乎任何其他内容,因此经典的仅 css 选项实际上是不可能的。
我对这种方法有一个问题,那就是每个“子”mxml 文件无法读取在父应用程序中创建的变量等。使用 Application.application 解决了一半的问题,但任何类型的全局变量解决方案似乎对我来说都失败了。因此,代码也没有变得那么干净。
我创建了一个类,该类在主应用程序中加载,其中包含一个静态变量,我将其用作与 AS3 等效的全局变量。遗憾的是,从这些“子”mxml 文件访问它是不可能的,我只能重新启动该类,或者在主应用程序中编写一个包装函数来获取这些变量。再说一遍,这绝不是完美的,而且仍然让我无法使用在父应用程序中启动的类中的方法。
让它正常工作的最佳方法是什么?
应用程序概要:
1) 主应用程序加载多个类/包,使用正确的设置启动一些类/包等 2)主应用程序有一个 ViewStack,其中每个主题都来自外部文件(themes/ThemeName.mxml) 3) 每个主题需要访问至少 2 个由主应用程序设置的变量(通过使用加载的类和方法),有些主题可能还需要直接访问主应用程序全局可用的某些功能, - 以及特定主题 mxml。
我希望我的解释有点清楚。请提出任何可能有助于您进一步理解这一点的问题。非常感谢!
-戴夫
小更新:更多说明:我有一个类,可以让我轻松创建相机 View 。我在主应用程序中初始化并使用该类,然后将新的 (web)cam(era) 实例放入变量中,以便在需要的任何地方使用。然后, View 文件 (themes/theTheme.mxml) 以所需的方式显示 2 个摄像机。我希望 View 文件使用在主应用程序中创建的相机,这样我就不必要求主题创建人员一遍又一遍地实现所有这些。这是我为什么需要这个的一个例子。
感谢您迄今为止对我的帮助!
最佳答案
来自 PHP 背景,我明白你可能会出错的地方。它不像 php,每个文件只是一个大块代码,可以包含到其他 php 文件中。
每个 mxml 文件都是一个成熟的 Actionscript 类。您并不是“包含那些 mxml 文件”,您实际上是在主 mxml 类中创建属性,并且这些属性的类型属于“子”mxml 对象。
如果您的子 mxml 组件确实需要来自父级的一些信息,您应该将该数据传递给它们。
但是退后一点。您确定要让这些子 mxml 文件完成所有这些工作吗?它们是否只是简单的愚蠢布局,没有任何逻辑?然后你可以让主 mxml 操作它们。
关于apache-flex - AS3/Flex : How to make mxml files loaded via ViewStack see their parent's variables, 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851581/