创建Flash CS3组件(一) 建立组件
在Flash CS3中,出现了一个全新的组件形式--fla组件,它完全改变了以前组件难于修改皮肤的缺点,使组件更加实用.
Flash CS3中的组件体系与以往v2版组件的体系并不相同,AS3的新特性也使组件的创建方式发生了较大的改变.所以,有必要重新看看该如何创建一个组件.注意,这里主要讲如何创建fla格式的组件,而不是swc格式的.
1.组件结构概述
在Flash CS3中,组件是由一个fla文件组成的,一个fla文件可以同时定义多个不同的组件,这样做的好处是使组件的发布集中化,缺点是有捆绑销售的嫌疑:)
哦,当然,组件是一定有AS文件的,但是我们会将AS文件也打包进fla中,这样做更方便,也更安全.
接下来,看看fla中都有些什么
FLA 文件包含一个影片剪辑元件,这个就是你的组件了.注意,一定是一个MovieClip,而不是Sprite什么的,因为我们要利用它的第二帧.这个元件的名字就是你组件的名字,它"链接"中的类和"组件定义"中的类都要指向你的组件类,这是必须的.
如图,影片剪辑元件有两个帧,第一帧要放一个方框,它的作用是占位,就是在你的组件还没有初始化时,标明组件的大小.它最好叫做"Component_avatar",这样做的好处就是尽量减少组件的大小.然后是第二帧,这里要放你组件的类文件和皮肤作为编辑帧,这里是一种Adobe的放法.
第一个图层:assets 就是在你的组件中要用到的皮肤,辅助的组件等等,也就是说,除了你的类文件,别的东西一律放这里.
第二个图层:assets names 就是放一些文本框,解释你在assets图层中放的都是什么东西,这会方便使用者更改皮肤.
第三个图层:avatar 这个图层是放第一帧的占位方框的,所以在第二帧你不必管它.
第四个图层:ComponentShim 就是放组件的类文件,具体怎么放,在下面会有详细的说明.
注意,在第一帧上我们并没有写上stop()函数,因为在Flash CS3中,Flash会自动"忽略"编辑帧.但如果你的元件有更多帧,就需要写上stop()
接着,看一看组件的库结构.为了尽量减少组件的大小,你应当如下放置你的影片剪辑:
Component Assets:放置你的组件用到的所有元件,类
_private:放置组件私有的东西,就是Component_avatar和类文件.类文件是一个swc类库,名字最好与组件的名字有关.注意,最好不要用ComponentShim作为类名,因为它已经被Flash内置的组件使用了,如果坚持要用ComponentShim作为类名的话,那么会与内置类产生冲突,使组件不能正常使用.
Shared:放置组件共有的元件,在Flash内置组件间共有的元件是arrowIcon,一个箭头 focusRectSkin,作为组件焦点框的影片剪辑panelBackground_Base,一个组件的背景,它是一个半透明的白色矩形 panelBackground_Shadow,一个作组件阴影的影片剪辑,Flash组件为它加上投影滤镜作为阴影
XXSkins文件夹:它应该以你的组件名命名,放置专用的元件.
组件所有元件的"链接"设置里,建议取消"在第一帧导出",然后记得在组件的第二帧加入所有需要的元件.
解释一下为什么这样做会减少组件的大小.
在不同的组件中,总有一些元件是重复的,而flash会自动把重名的元件删除,所以使用相同的结构,就不会让swf中同时有多个功能相同的元件,就不会有空间的浪费,自然减小了大小.
如果还有什么问题,可以参考Adobe的做法.
2.将AS文件打包成swc元件
第一种方法:
第一种方法是春叶飘零曾经介绍过的,就是先建立一空白剪辑,名称随便,然后在"链接"中的类设置为你的组件类,然后再建立一空白剪辑,设置名称为"ComponentShim",然后在"链接"中的类设置为"MyComponentShim",确定,进入编辑,把前面的元件拖放到场景中.然后点中库中的"MyComponentShim"右键弹出菜单选"转换为编译剪辑"选项,这时候库中就会生成一个"MyComponentShim"的组件,这样"MyComponentShim"组件就制作完成。
当然,记得把MyComponentShim改成一个不会重名的名字.
第二种方法:
这种方法来自《Actionscrīpt 3.0 变成精髓》,比第一种效果好,但是要麻烦.当第一种方法产生了什么问题时,可以采用第二种方法.
先建立一个.as文件,内容如下:
package{
import myComponentClass;//在这里导入你的组件类
import flash.display.Sprite;
public class myComponentShim extends Sprite{
myComponentClass;//在这里只要调用一下,甚至不需要使用变量
}
}
然后建立一个.fla文件,并将文档类设为myComponentShim,然后将"发布设置"中flash选项卡下的"导出swc"选中,建议将舞台大小设为1*1,然后发布,得到myComponentShim.swc
接下来,将这个swc文件放在Components文件夹中(Adobe Flash CS3\zh_cn\Configuration\Components),然后在flash的"组件"面板中就会出现名为myComponentShim的组件,这个组件就是需要的类库.
3.组件定义
下面,介绍一下组件定义面板.
(1)参数 这里是组件的参数,从Flash MX 2004开始,Flash就开始使用组件元数据来定义组件参数,对于Flash CS3中的组件元数据,请见http://space.flash8.net/space/?376578/action_viewspace_itemid_415239.html.html
(2)类 在这里输入你的组件类,这是必须的
(3)自定义用户界面
(4)实时预览 这是组件在创作界面上的实时预览,可以直接使用外部的swf,就是"外部.swf中的实时预览",也可以将外部的实时预览嵌入fla文件中
(5)描述 组件的描述
(6)图标 定义组件的图标(就是左边的那个按钮)
(7)参数被锁定在实例中 如果取消选择此选项,用户则可以向每个组件实例添加不同于组件参数的参数。通常应选择此设置。此选项提供与 Flash MX 的向后兼容性。
(8)显示在"组件"面板中 定义组件是否会显示在"组件"面板中,如果取消此选项,组件就不会出现在"组件"面板中,此选项通常用于设置辅助用的组件
(9)编辑帧 组件的编辑帧,就是双击组件之后转到的编辑皮肤用的帧,一般是第二帧
(10)要求最低播放器版本
(11)要求最低Actionscrīpt版本
4.分发组件
将上面的步骤做完后,就可以分发组件了.先将fla文件中所有与组件无关的元件删除,然后整理库中的元件,确保所有元件都不会出现命名冲突(除了要重用的元件),因为这个fla文件中的所有元件都将出现在用户的库中,所以最好确保它们有序.
最后,将这个fla分发出去,组件的创建就算是结束了!
在组件创建中,很重要的一步是写组件类文件.在CS3版中组件体系与以往的完全不同,所以我会从头介绍CS3的组件体系.
转载自:http://www.cnblogs.com/shinings/archive/2008/10/28/1321614.html