标题: 精确计时|Depth|鼠标消隐|加速度移动
冷剑无痕
元帅
Rank: 1



UID 43494
精华 0
积分 20403
帖子 17096
威望 0
金币 10065
热心 8
阅读权限 100
注册 2007-2-14
状态 离线
精确计时|Depth|鼠标消隐|加速度移动

精确计时   我们设定了时间为 60 秒,然后通过 setInterval 来定期(每1000milliseconds)触发一个函数 runTimer。
  function runTimer 用来计时,当时间到了以后,转去执行 outThere。
  function outThere 用来处理时间到了以后的动作,不要忘记 clearInterval(intervalID),停止计时。
  以下是引用片段:
  vartime:Number=60;
  varintervalID:Number;
  intervalID=setInterval(runTimer,1000);
  functionrunTimer(){
  time--;
  trace(time);
  if(time==0){
  outThere();
  }
  }
  functionoutThere(){
  //blahblahblah
  clearInterval(intervalID);
  }
  找到目前最小的一个可用的深度 Depth(来自国外)
  针对 Flash Player 6 的:
  以下是引用片段:
  availTopDepth=function(){
  varallDepths=[];
  for(varzin_root){
  if(_root[z]instanceofButton||_root[z]instanceofMovieClip||_root[z]instanceofTextField){
  allDepths.push(_root[z].getDepth());
  }
  }
  if(allDepths.length!=0){
  sortAll=function(a,b){if(ab){return1;}else{return0;}};
  allDepths.sort(sortAll);
  return(parseInt(allDepths[allDepths.length-1])+1);
  }
  };
  trace(_root.availTopDepth());放置一个 MovieClip 在 Stage,再执行这段 Action 就会得到最近的一个可用深度。我们也可以用这个来创建绝对不
  会出问题的 MovieClip,比如:
  _root.createEmptyMovieClip("mc_name", availTopDepth());
  getNextHighestDepth() 以及 getInstanceAtDepth(depth)是 for player 7 的。

  鼠标消隐
  鼠标消隐之后,右健弹出菜单,鼠标就又出现了,并且一直保留着~
  完整的解决方法是:在 左健抬起、右健第二次抬起、回车键抬起的时候再次消隐鼠标。
  完整的方法比较复杂,下面是一个简单的解决方法,可以解决绝大多数的问题:
  以下是引用片段:
  onEnterFrame=function(){
  if(Key.isDown(1)||Key.isDown(Key.ENTER)){
  Mouse.hide();
  }
  }

  我常用的一个加速度移动的代码
  以下是引用片段:
  //以下代码放到主场景第一帧
  stop();
  _global.a=5;
  //移动加速度,越大越慢
  _global.click_x=0;
  //用来记录点击鼠标的位置
  _global.click_y=0;
  _root.onMouseDown=function(){
  _global.click_x=_root._xmouse;
  _global.click_y=_root._ymouse;
  //me是受控mc的instancename
  me.onEnterFrame=function(){
  if(Math.abs(_global.click_x-me._x)<2&&Math.abs(_global.click_y-me._y)<2){
  //如果已经基本移到了鼠标点过的位置就取消这个事件句柄的响应程序
  delete(this.onEnterFrame);
  return;
  }else{
  //控制移动
  me._x+=(_global.click_x-me._x)/_global.a;
  me._y+=(_global.click_y-me._y)/_global.a;
  }
  };
  };
  //////以下部分可选
  //a_v是个可以输入的文本框,用来输入加速度,即可以自定义速度,方便调试
  a_v.onChanged=function(){
  if(a_v.text==""||Number(a_v.text)>1000||Number(a_v.text)<0){
  //defaultvalue
  a_v.text=5;
  }else{
  _global.a=Number(a_v.text)?Number(a_v.text):5;
  //trace(_global.a);
  }
  };

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



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

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