标题: 直线移动|让播放的MC暂停
冷剑无痕
元帅
Rank: 1



UID 43494
精华 0
积分 20403
帖子 17096
威望 0
金币 10065
热心 8
阅读权限 100
注册 2007-2-14
状态 离线
直线移动|让播放的MC暂停

两点间的直线移动   以下是引用片段:
  vars=15;
  _root.onMouseDown=function(){
  varoldM_x=_root._xmouse;
  varoldM_y=_root._ymouse;
  ax=aa._x;
  ay=aa._y;
  dis=Math.sqrt((oldM_x-ax)*(oldM_x-ax)+(oldM_y-ay)*(oldM_y-ay));
  xa=(oldM_x-ax)/dis;
  ya=(oldM_y-ay)/dis;
  amove();
  };
  functionamove(){
  onEnterFrame=function(){
  aa._x+=s*xa;
  aa._y+=s*ya;
  if(Math.sqrt((aa._x-ax)*(aa._x-ax)+(aa._y-ay)*(aa._y-ay))>dis){
  deleteonEnterFrame;
  }
  };
  }

  计算两个对象之间/两点之间的距离(注册点)
  以下是引用片段:
  functiongetDistanceOf(target1,target2,x2,y2){
  if(arguments.length==4){
  dx=x2-target1;
  dy=y2-target2;
  }elseif(arguments.length==2){
  dx=target2._x-target1._x;
  dy=target2._y-target1._y;
  }
  returnMath.sqrt(dx*dx+dy*dy);
  }
  //Arguments 对象是一个数组,其中包含作为参数传递给任何函数的值。每次在动作脚本中调用函数时,都会为该函
  数自动创建 Arguments 对象。同时还会创建一个局部变量 arguments,使您可引用 arguments 对象。

  让播放的MC暂停一段时间
  以下是引用片段:
  functionpausePlay(sec){
  pfunc=function(){
  this.play();
  clearInterval(this.pint);
  }
  stop();
  this.pint=setInterval(this,"pfunc",sec*1000);
  }
  //这样调用.sec是暂停的时间,单位是秒.
  pausePlay(2);
  onHitTest(target),自己写的一个MC事件,当该MC与指定的MC hitTest的时候触发事件.其实也没什么特别的地方,一样也是用setInterval来实现
  以下是引用片段:
  stop();
  MovieClip.prototype.listen=function(target){
  if(this.isHiting==undefined){
  this.isHiting=this.hitTest(target);
  }
  if(this.hitTest(target)){
  if(this.isHiting==false){
  this.broadcastMessage("onHitTest",this,target);//广播事件,给事件传递this和target两个参数
  }
  this.isHiting=true;
  }else{
  this.isHiting=false;
  }
  };//为MovieClip添加域成员listen成员,用于监视当前对象与目标是否碰撞
  MovieClip.prototype.watch=function(target){
  this.timer=setInterval(this,"listen",50,target);
  };//以每50毫秒检测一次的速度来检测是否碰撞
  MovieClip.prototype.unWatch=function(){
  clearInterval(this.timer);
  };//停止对对象的监视
  ASBroadcaster.initialize(MovieClip.prototype);//初始化MovieClip原型为事件源
  //下面是调用的示例
  //假设有两个MovieClip,左边ball,右边wall,让ball不断往wall移动,同时监视wall,一旦击中触发事件onHitTest
  ball.onEnterFrame=function(){
  this._x+=5;
  };//让ball不断往右方移动工
  myListener=newObject();
  myListener.onHitTest=function(source,target){
  trace("The"+source._name+"hit"+target._name+".");
  };
  ball.addListener(myListener);//创建监听员并注册给ball
  ball.watch(wall);//让ball监视wall

顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)



当前时区 GMT+8, 现在时间是 2008-7-25 03:47
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP