繁体   English   中英

如何为Flash中的MovieClip分配属性并使它们在Flex中可访问?

[英]How to assign properties to a MovieClip in Flash and have them accessible in Flex?

情况/问题

这是情况。

在Flash Professional中,我有一个MovieClip,并且该剪辑有子级。 假设父剪辑是夜空,而子剪辑则是动画循环播放的明星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代码中访问的属性。

我还能如何处理呢? 这不应该那么难。

在符号属性中,为动画片段创建一个新类,然后在此处声明您的属性。 只要您导入swc,Flex就会看到该属性并且是类型安全的。

那里没有太多好的文档,这是我能找到的最好的文档: http : //www.adobe.com/devnet/flash/articles/concept_base_class.html

事实证明,CS5中存在一个与使用组件有关的细微错误。

Flash CS5 + components as children in UIMovieClips = fail.

保存为CS4文件时,完全相同的文件可以进行零修改。

因此,此问题的“答案”是先前的解决方案是正确的方法。 这个奇怪的错误可能需要一些时间才能在CS5中得到解决。 据我所知,Adobe意识到了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM