首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

Flash 游戏设计札记:计时器制作

2012-11-01 
Flash 游戏设计笔记:计时器制作[img][/img]在游戏当中,时间器是伴随游戏一直进行的,有时候我们在制作小游

Flash 游戏设计笔记:计时器制作
[img][/img]在游戏当中,时间器是伴随游戏一直进行的,有时候我们在制作小游戏的时候希望可以在计算这个游戏所玩的时间,那么时间器的制作是我们要解决的问题;关于时间其实关键一点要知道怎么换算

一,单位换算

   如:1小时=60分

         1小时=3600秒

         1分=60秒

         1秒=1/60 分

         1秒=1/3600小时

         1秒=1000毫秒;

有了这样的换算后,我们就可以制作我们所需要的时间器,首先我们导入i

mport flash.utils.getTimer;

getTimer函数可以计算出运行时候所需要的毫秒数。

private var lasttime:int;//定义个变量用于上一点的时间

public function init():void

{

   lasttime=getTimer();//计算出运行程序所需要的时间

}

addEventListener(Event.ENTER_FRAME,Run);

private function Run(e:Event):void
  {
  
   SetTime();//时间器
  }

private function SetTime():void{var timepast:int=getTimer()-lasttime; //经历了几秒。var hour:Number=Math.floor(timepast/(3600*1000));var fen:Number=Math.floor(timepast/(60*1000));var second:Number=Math.floor(timepast/1000);if(second>=60){second-=60*fen;}if(fen>=60){fen-=60*hour; }showTime.text=String(100+hour).substr(1,2)+":"+String(fen+100).substr(1,2)+":"+String(second+100).substr(1,2);}


简单的效果这样就出来了。

要进行一些判断,当second 大于60的时候,由于second是一直递增的,时间秒的区间是【0,60】所以当60来的时候

我们就改将它减去 分 *60 这样时间又再次显示回原来的状态了

二 00-00-00格式的处理

showTime.text=String(100+hour).substr(1,2)+":"+String(fen+100).substr(1,2)+":"+String(second+100).substr(1,2);

我们使用了String类一个方法substr来截取我们所需要的信息:从1开始索引开始截取后面的两位,这样就可以变成了这种格式了 。

substr(startIndex:Number = 0, len:Number = 0x7fffffff):String
返回一个子字符串,该子字符串中的字符是通过从指定的 startIndex 开始,按照 len 指定的长度截取所得的
看看下面时间器,还是觉得可以吧



源代码:可以进行修改一下

package com.game{import flash.utils.*;import flash.events.*;import flash.text.*;import flash.display.MovieClip;public class GameTime extends MovieClip{private var lastTime:Number;private var timepast:Number;private var showTime:TextField;private var hour:Number;//小时private var min:Number;//分private var second:Number;//秒public function GameTime(){lastTime=getTimer();showTime=new TextField  ;addChild(showTime);addEventListener(Event.ENTER_FRAME,Run);}public function Run(event:Event):void{Show();}private function Show():void{timepast=getTimer() - lastTime;//毫秒运算hour=Math.floor(timepast / 3600 * 1000);min=Math.floor(timepast / 60 * 1000);second=Math.floor(timepast / 1000);if (hour >= 24){second=0;hour=0;second=0;}if (second >= 60){second-= 60 * min;}if (min >= 60){min-= 60 * hour;}showTime.text=String(100 + hour).substr(1,2) + ":" + String(min + 100).substr(1,2) + ":" + String(second + 100).substr(1,2);}public function getGameTime():String{timepast=getTimer() - lastTime;//毫秒运算hour=Math.floor(timepast / 3600 * 1000);min=Math.floor(timepast / 60 * 1000);second=Math.floor(timepast / 1000);if (hour >= 24){second=0;hour=0;second=0;}if (second >= 60){second-= 60 * min;}if (min >= 60){min-= 60 * hour;}return String(100 + hour).substr(1,2) + ":" + String(min + 100).substr(1,2) + ":" + String(second + 100).substr(1,2);}}}

这里有两个方法,在创建实例化后,可以自动生成上面的格式,当一个mc来使用,只要实例化就可以。

var time:GameTime=new GameTime()

addChild(time);

或者进行监听就可以

热点排行