C:\Program Files\Adobe\Ado be Flash CS4\Common\Configuration\Components
flash cs4下自定义组件的基本实现步骤(我的目标是创建一个绘制矩形背景的工具类):
1.创建一个文件夹test,在这个文件夹下创建一个test.fla文件.
2.打开test.fla文件,新建一个元件,命名为rect.
3.将库中的那个rect转换为Sprite的实例(为了轻量)
转换方法:
右键点击库中的那个rect,在弹出的右键菜单上选择 属性 选项,打开元件属性面板
如果元件属性面板没有展开,请点击元件属性面板的高级按钮
在展开的元件属性面板上,勾选 "为ActionScript导出"和"在第一帧导出"
在 基类 这个文本框里面修改基类,将原来的flash.display.MovieClip改为flash.display.Sprite
在 类 这个文本框中修改为我们自定义的类,我这里的自定义类为:geomOrg.vily.RectSpr
那么在 类 这个为本框中就填入geomOrg.vily.RectSpr
4.创建自定义的类geomOrg.vily.RectSpr
在test.fla所在的目录下,创建geomOrg文件夹,在geomOrg文件夹里创建vily文件夹,
在vily文件夹里创建RectSpr.as文件(这个就是我们的自定义类,这个类和库中的那个rect相关联)
再在vily文件夹里创建Tool.as文件(这个是工具类),因为这个Tool类才是我们要用的工具类
连个类文件的代码如下:
Code
//RectSpr.as
package geomOrg.vily
{
//geomOrg.vily.RectSpr
import flash.display.Sprite;
import flash.geom.Rectangle;
import geomOrg.vily.Tool;
public class RectSpr extends Sprite{
public function RectSpr(){
drawBgRect(new Rectangle(0,0,20,20), 0xff0000);
new Tool();//这句很关键,没有这句,就无法访问到组件中的geomOrg.vily.Tool类
}
public function drawBgRect(rect:Rectangle, color:uint,alphaNum:Number = 1.0):void{
this.graphics.beginFill(color, alphaNum);
this.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
this.graphics.endFill();
}
}
}
//RectSpr.as
package geomOrg.vily
{
//geomOrg.vily.RectSpr
import flash.display.Sprite;
import flash.geom.Rectangle;
import geomOrg.vily.Tool;
public class RectSpr extends Sprite{
public function RectSpr(){
drawBgRect(new Rectangle(0,0,20,20), 0xff0000);
new Tool();//这句很关键,没有这句,就无法访问到组件中的geomOrg.vily.Tool类
}
public function drawBgRect(rect:Rectangle, color:uint,alphaNum:Number = 1.0):void{
this.graphics.beginFill(color, alphaNum);
this.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
this.graphics.endFill();
}
}
}
Code
//Tool.as
package geomOrg.vily
{
//geomOrg.vily.Tool
import flash.display.Sprite;
import flash.geom.Rectangle;
public class Tool{
public function Tool(){
trace("create a Tool instance.");
}
public function infoToString():void{
trace("this is a tool class.");
}
public function drawRect(spr:Sprite, rect:Rectangle, color:uint,alphaNum:Number = 1.0):void{
spr.graphics.beginFill(color, alphaNum);
spr.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
spr.graphics.endFill();
}
}
}
//Tool.as
package geomOrg.vily
{
//geomOrg.vily.Tool
import flash.display.Sprite;
import flash.geom.Rectangle;
public class Tool{
public function Tool(){
trace("create a Tool instance.");
}
public function infoToString():void{
trace("this is a tool class.");
}
public function drawRect(spr:Sprite, rect:Rectangle, color:uint,alphaNum:Number = 1.0):void{
spr.graphics.beginFill(color, alphaNum);
spr.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
spr.graphics.endFill();
}
}
}
5.将库中的rect元件发布为swc文件
在rect元件上点击右键,在弹出的右键菜单上选择 组件定义 项,进入组件定义面板
在组件定义面板的 类 这个文本框中填入geomOrg.vily.RectSpr,其他的选项都勾上,最后点击确定,
这时候你会发现,库里面的rect元件的样子变为组件的图标
接着,在rect元件上点击右键,选择导出swc文件,这里给这个swc起名为 RectDrawer,将它存放在桌面上
6.将存放在桌面上的 RectDrawer 组件放在自定义组件文件夹内,在Windows下这个文件夹是:
C:\Program Files\Adobe\Ado be Flash CS4\Common\Configuration\Components
现在组件创建完成,我们来使用一下,创建一个testSwc.fla文件,打开后,再打开窗口 ->组件面板 ,就会看到标准组件一项(如果看不到,就点击组件面板的右上角的小三角,在弹出的菜单上选择 重新加载即可)。在标准组件展开列表中你会看到一个新增加的rect名称的组件,将它放在库中。现在就可使用了。
直接在帧上写入下面代码,就可以看到已经调用了组件当中的类的方法
Code
//帧中的代码:
import flash.geom.Rectangle;
import geomOrg.vily.RectSpr;
import geomOrg.vily.Tool;
var rectSpr:RectSpr = new RectSpr();
addChild( rectSpr );
var rect:Rectangle = new Rectangle(0,0,100,200);
rectSpr.drawBgRect(rect, 0x00);
var tool:Tool = new Tool();
tool.infoToString();
rect.x = 200;
tool.drawRect(this, rect, 0x00aa00);
//帧中的代码:
import flash.geom.Rectangle;
import geomOrg.vily.RectSpr;
import geomOrg.vily.Tool;
var rectSpr:RectSpr = new RectSpr();
addChild( rectSpr );
var rect:Rectangle = new Rectangle(0,0,100,200);
rectSpr.drawBgRect(rect, 0x00);
var tool:Tool = new Tool();
tool.infoToString();
rect.x = 200;
tool.drawRect(this, rect, 0x00aa00);
至此,组件的建立和使用都已经完成,以此为基础可以建立更强大的组件。