FLASH 组件制作
1.制作组件
准备工作:嘿嘿,准备工作要做好,本文的作者(我)使用Macromedia Flash MX英文版,Macromedia Extension Manager(Macromedia扩展管理器),windows 98操作系统
首先我们打开flashMX,在上面画一个圆圈,并且转换成符号(symbol,Ctrl+F8),behavior(行为)选择MovieClip——这样我们就建立了一个MovieClip实例,需要说明的是,组件是一个很大的概念,可以是jsfl或者swc文件,一个好的组件可能会打包swf,xml等等一切组件所需的文件,就像那篇转贴中所说,mxp文件其实只是一种压缩文件,所以不一定是只有存在fla文件中的MovieClip实例才可以制作组件。
下一步就是输入代码了。从这里开始,我们的组件就跟普通的MovieClip实例区别开了。
双击进入刚才我们转换成mc的实例,进入这个mc的编辑状态,这里的时间轴即为这个mc的时间轴,单击这个时间轴的第一帧,输入下面的代码:
#initclip
function myComponent() {
this.init();
}
Object.registerClass("myComponent1", myComponent);
myComponent.prototype.init = function() {
this.register();
};
myComponent.prototype.register = function() {
Key.addListener(this);
};
myComponent.prototype.destory = function() {
Key.removeListener(this);
};
myComponent.prototype.onKeyDown = function() {
if (Key.isDown(Key.RIGHT)) {
this._x += this.speed;
} else if (Key.isDown(Key.LEFT)) {
this._x -= this.speed;
} else if (Key.isDown(Key.UP)) {
this._y -= this.speed;
} else if (Key.isDown(Key.DOWN)) {
this._y += this.speed;
}
};
#endinitclip
关于代码的具体含义,我不打算说了(汗……不要扔我),因为组件本身的代码就有很大的灵活性,是否使用FUIComponentClass,或者是否需要为组件构造一个类等等,这些对于AS程序员来说都是需要考虑的问题,这些东西本来就是仁者见仁,智者见智,没有定式的。
接下来就是把这个mc转换成组件了。打开库,在这个内部含有代码的mc上右键单击,选择component definition...
接下来你会看到本文所附图片。
就按照图片设置的就可以了。设置完成之后点确定,再到库中一看,我们的组件已经变成真正的组件了。
我们将文件保存成composhow.fla
到此,你应该知道一般的还在源文件中的组件是如何制作出来的了吧?呵呵
=================================
2.打包组件
打包一个fla文件中的组件,有很多可以利用的工具,比如说之前论坛上提供的MXI Creator工具——实际上我是很少写xmi文件的,从来都是用MXI Creator直接做。不过哟些东西还是要说地,比如mxi是什么。
mxi是组件安装文件,通过扩展安装器,我们可以很好的转换xmi文件为mxp文件,最终的成品就是mxp文件。对于mxi文件,他其实就是一个mxl文档。
下面给出一个mxi文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<macromedia-extension name="myOwnComponent1" version="1.0.0" type="flash component" requires-restart="false">
<!-- Describe the author -->
<author name="green_tea" />
<!-- List the required/compatible products -->
<products>
<product name="Flash" version="6" primary="true" />
</products>
<!-- Describe the extension -->
<description>
<![CDATA[this is made by green_tea.<br>www.cn-flash.com<br>e-mail:gt2005@gmail.com]]>
</description>
<!-- Describe where the extension shows in the UI of the product -->
<ui-access>
<![CDATA[you can use it to control an object moves here and there.]]>
</ui-access>
<!-- Describe the files that comprise the extension -->
<files>
<file name="composhow.fla" destination="$flash/Components" />
</files>
</macromedia-extension>
直接复制上面的代码到文本编辑器中,保存成mxi后缀名的文件就可以了。
下面说明一下这段代码:
我本身xml学的太差,所以只好这样跟大家解释:
首先macromedia-extension标签必须在第一个标签。
开头部分的type属性,表示所打包的文件的用途——比如是flash组件?或者是flash面板?或者是其他的等等。这会在下文详细介绍(如果有下文的话)
requires-restart:用于指明这个组件在安装之后是否需要重新启动
name和version:安装之后将显示在扩展安装器中。name表示一个组件的名称。version是组件版本。
author标签指明作者。
products标签
primary属性表示组件是否是同其他MM的产品一同工作,比如这个组件是flash组件,但是他却需要与fireworks一同工作。
product标签中的name属性指出这个组件是flash的组件,或者是Dreamweaver的组件,或者是fireworks的组件。version表明组件是为flash的哪个版本所设计的。因为我们制作的组件要在flashMX中使用,所以我们这里version为6,需要注意的是MX2004仍然可以安装针对MX开发的组件。但是否能够继续在MX2004下使用MX组件,就是另外一说了。
product标签下还有一个可选参数required。具体不介绍了,因为我也不了解,总之flash扩展是无法使用利用属性的。
description标签
介绍组件的一些信息,安装组件之后这些信息将会显示在扩展安装器中
这个标签必须包含有CDATA。大家不要按照我的瞎写,我是在随便填写一些关于作者的内容。
ui-access标签
安装组件后仍然会显示在扩展安装器中——没啥可说的,用来描述组件的接口啊一些的东西,大家多参考网络上mxp文件上所写的,其实因为ui-access跟description的内容都要显示在扩展安装器中,所以大家都是随便瞎写的,该说的话说到了就是了。
跟description标签一样必须有一个CDATA
files标签
这是整个打包的最后部分,也是真正开始指明我们要打包的组件的具体所在位置的标签。
file name是组件存在的源文件,我们这里是composhow.fla,需要注意的是,我没有写出具体的fla文件在硬盘上的位置,所以这个mxi文件就必须同fla文件放在一起。但是原则上也是可以写成绝对路径的那种。
destination用来指出这个扩展是用来干什么的——这里由于我们制作的是flash component,所以填写$flash/Components。
platform属性指明组件工作的操作系统,这里没有这个属性,表示组件在MAC以及windows下都可以工作。
要写的话可以写成platform="win"这种格式。
mxi文件最终以</macromedia-extension>结束,整个标签都嵌套在macromedia-extension标签中,并且以这个标签的结束为结束。
不要以为我们完成了组件的制作。不要忘记我们还有最重要的一步,就是发布成mxp文件,这个就好办多了,双击mxi文件,就可以打开扩展安装器,按照提示选择保存mxp文件的地址,OK以后我们的mxp文件就正式做好了。
怎么说呢...虽然mxp文件的制作非常简单,但是关键的功夫还是要下在组件上,因为毕竟打包组件是一种技能,真正能带来方便的还是组件——通过mxp,还可以扩展flash面板,扩展制作flash模版等等:)我抽时间介绍一下mx下的自定义面板是如何通过mxp文件扩展的





