2013-03-04 55 views
0

我有一个在几个swf中使用的自定义组件(例如MyButton)。我想在运行时共享组件,因此一旦我们的设计者改变了按钮的视觉效果,我们就不需要发布所有使用此按钮的flas。如何在as3中共享组件

在as2中,我可以将此按钮放在资产fla(例如。lib.swf)中,并检查symbol属性中的“export for runtime share”。然后将按钮复制到fla(例如main.swf)并检查“import for runtime share”,这可以正常工作。然而在as3中,如果我在上面做了,如果我在舞台上放置了一个按钮实例并修改了它的可检查属性,我会得到一个编译错误“1046:未找到类型或不是编译时常量”。

我搜索了网页,发现这个http://www.kirupa.com/forum/showthread.php?317257-Runtime-Shared-Library-woes。然后我尝试了swc方法,但似乎swc会编译为swf,它根本不共享。

  1. 共享组件必须放在舞台上,因为所有FLA将由我们的设计师,而他什么都不知道关于编程进行修改。
  2. 我们不能使用flex,所有的操作都必须在Flash CS5中完成。

回答

0

我已经找到了解决办法。

  1. 给持有进口组件绑定类
  2. 编辑类文件的雪碧,宣布自己的组件无论是否选中了“自动声明实例在舞台上”
0

1:将库中的所有组件放在.fla中,如下所示:我的fla名称BrushClip.fla组件包装了MovieClip。并将ActionScript链接导出到ActionScript类。

enter image description here

2:文件 - 发布设置检查SWC格式和发布如下:

enter image description here

3:检查,创建SWC文件在您的项目。现在您可以使用swc其他项目,您必须链接到File-ActionScript Settings-Library Path中的SWC库。以后如果您更改了组件设计,请重新发布。并复制并粘贴swc文件。自动会改变重启swf文件。 BrushClip.swc拥有所有组件。

enter image description here

可以作为访问如下:

var brushClip0:MovieClip = new BrushClip0(); 
addChild(brushClip0); 

var brushClip10:MovieClip = new BrushClip10(); 
addChild(brushClip10); 
+0

混淆上第3步。我无法使用脚本在fla中创建组件。我必须将swc文件复制到Adobe的配置文件夹中,然后在组件工具箱(Ctrl + F7)中找到该组件并在舞台上拖动它。因为布局是由我们的设计师编辑的。一旦在舞台上实现了组件,组件将被复制到这个fla的库中,然后发布到swf中。当我改变组件设计时,这个swf仍然使用旧的风格。 – Ryan 2013-03-04 09:56:27

+0

好吧,我错了。您必须链接到File-ActionScript Settings-Library Path中的SWC库。 – 2013-03-04 10:03:38

+0

你的代码有效。但我的问题是在没有代码的舞台上放置组件。我想在这个FLA的库中使用SWC中的组件,就像通常的动画片段一样,拖到舞台上并在Flash IDE中设置位置/大小/名称/ alpha。 – Ryan 2013-03-04 12:48:14