【发布时间】:2011-07-05 08:35:02
【问题描述】:
情况/问题
情况是这样的。
在 Flash Professional 中,我有一个 MovieClip,并且该剪辑有子级。假设父剪辑是夜空,子剪辑是循环动画的明星影片剪辑的不同实例。整个事情编译成一个 NightSky.swc,我在 Flash Builder 中使用它作为一个更大项目的一部分。
在 Flash Pro 中,我以高精度定位子剪辑。从那里,我想为这些“星星”分配属性。比如说,我想分配“galaxyId”和“isRedGiant”但是(这是关键)我想在 Flash Professional 中编辑这些属性并让这些值在 Flex 中可访问.我该怎么做?
示例
例如,使用 Flash Pro,我在天空中放置了 6 颗星星,给它们全部的星系 ID 为“MilkyWay”,并指定其中 3 颗为红巨星。然后,我编译 SWC 并转到 flex。在 Flex (Flash Builder) 中,我有一些类似的逻辑:
public function showRedPulse():void {
//psuedo-code just as an example:
for each Child in the Night Sky
if Child is in the Milky Way
and if Child is a Red Giant
Then, gotoAndPlay("redPulse")
}
所以基本上,我需要访问 Flex 中的属性,但我需要在 Flash 中设置它们。
以前的解决方案
好的。所以我在 CS4 中已经做了大约 2 年了,但是在 CS5 中,它非常有问题。所以我正在寻找一种新的方法。我之前所做的是创建一个 ActionScript 类(扩展 UIMovieClip)并将 Inspectable 元标记添加到我需要在 Flash 中看到的字段中,如下所示:
private var _galaxyId:String;
[Inspectable(name="galaxyId", type=String, defaultValue="MilkyWay")]
public function set galaxyId(value:String):void {
_galaxyId = value;
}
然后,在 Flash Professional 中,我会让“明星”使用 actionscript 类作为它的基类。然后,我将右键单击库中的星形并编辑它的组件定义,将其指向同一个类。一旦我这样做了,所有可检查的属性都会显示在 Flash 的组件检查器中。
总结
多年来,我以前的方法效果很好。现在,在 CS5 中,它非常有问题,只在某些时候工作!我完全陷入困境,无法继续我的项目,我正在考虑完全放弃 Flash Pro,转而尝试 Flash Catalyst。
我只需要在 Flash 中创建可以在 Flex 中使用的对象(3.6 而不是 Flex 4)。我需要这些 Flash 对象具有可以在 Flash 中编辑并在 Flex 代码中访问的属性。
我还能如何解决这个问题?这不应该那么难。
【问题讨论】:
-
目前还没有 Flex 3.6,是吗? 3.5 是最新的“黄金”版本。
-
您是否尝试过在 MovieClip 的 frame1 中添加帧动作并在那里设置变量值?你可以省略元标记,只创建普通的公共 setter 和 getter。
-
@Flextras:我当然希望有 3.6,我们已经使用了大约 14 个月。大声笑(如果我没记错的话,我们的一些代码在 3.5 下也不起作用)最新版本是 3.6.0.16736,它来自每晚构建。所以我猜官方的回答是“是和不是”。
标签: flash apache-flex actionscript-3 components ria