发新话题
打印

[分享] 扩展MovieClip类的实践

扩展MovieClip类的实践

源创代码,仅为了学习“类”而作。
欢迎提意见!
先发类代码和源文件:
复制内容到剪贴板
代码:
/************
人类实验
制作:ybzjllj
    2006.1
************/
class 人 extends MovieClip {
//声明属性
var 头:MovieClip;
var 声音:Sound;
//构造函数
function 人() {
  头.信息._visible = false;
}
//定义方法
//启动眼睛的动画
function 眼眨() {
  头.右眼.play();
  头.左眼.play();
}
//眼睛的状态,参数a是跳转的目标(帧标签)
function 眼睛(a:String) {
  头.右眼.gotoAndStop(a);
  头.左眼.gotoAndStop(a);
}
//眼球动作,两个参数分别为左、右眼球的跳转目标
function 眼球动作(a:String, b:String) {
  头.左眼.眼球.gotoAndStop(a);
  头.右眼.眼球.gotoAndStop(b);
}
//口形动作,参数a:是说话的文本(显示的信息),b:是说话声音在库中的链接ID
function 讲话(a:String, b:String) {
  if (b != undefined && 声音== undefined) {
   声音 = new Sound(this);
   声音.attachSound(b)
   声音.start();
  }
  头.口.play();//启动口形动画
  头.信息._visible = true;
  头.信息.文本.text = a;
}
function 口形(a:String) {
  声音.stop();
  delete 声音;
  头.口.gotoAndStop(a);
  头.信息.文本.text = "";
  头.信息._visible = false;
}
//左右移动
function 移动(n:Number){
  _x+=n;
}
}

附件

人.as (1.28 KB)

2007-1-17 22:41, 下载次数: 686

人.fla (122 KB)

2007-1-17 22:41, 下载次数: 773

人.swf (14.19 KB)

2007-1-17 22:41, 下载次数: 964

向大家学习!

TOP

上面类代码保存为“人.as”,再新建一个fla文件保存在与“人.as”同一目录。

fla中建一个“人”MC,“人”里面做一个“头”MC,“头”上面做“左眼”“右眼”“口”等MC,详情可看源文件。

要让“人”MC与“类”关联,就要在库里设置“人”MC的链接,为AS导出填“人”(即类名)。

导入声音,设置链接ID为“NO”,可以设为你想要的名。

为了试验类的方法,舞台上放了很多按钮,相关代码放在下一帖,也可看源文件。
向大家学习!

TOP

复制内容到剪贴板
代码:

眨眼.onRelease = function() {
小人.眼眨();
}
争眼.onRelease = function() {
小人.眼睛("争眼");
}
闭眼.onRelease = function() {
小人.眼睛("闭眼");
}
对眼.onRelease = function() {
小人.眼球动作("右","左");
}
右转眼.onRelease = function() {
小人.眼球动作("右","右");
}
左转眼.onRelease = function() {
小人.眼球动作("左","左");
}
眼定中.onRelease = function() {
小人.眼球动作("中","中");
}
说话.onRelease = function() {
小人.讲话("N O !","NO");
}
张嘴.onRelease = function() {
小人.口形("张口");
}
闭嘴.onRelease = function() {
小人.口形("闭口");
}
向左移.onRelease = function() {
小人.移动(-1);
delete 小人.onEnterFrame;
}
向右移.onRelease = function() {
小人.移动(1);
delete 小人.onEnterFrame;
}
自动左移.onRelease = function() {
小人.onEnterFrame = function() {
  小人.移动(-5);
  if(this._x<0) delete this.onEnterFrame;  
}
}
自动右移.onRelease = function() {
小人.onEnterFrame = function() {
  小人.移动(5);
  if(this._x>Stage.width) delete this.onEnterFrame;  
}
}
向大家学习!

TOP

为了让新手易于看懂,用了很多的中文变量和实例名。也是为了减少注释。

请批评指正!
向大家学习!

TOP

受教了

楼主辛苦

TOP

谢谢楼主,多写些面向对象的编程方法。

TOP

发新话题