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

本文介绍了一种游戏时间器的实现方法,包括单位换算、毫秒级计时及格式化输出等关键技术点。

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

一,单位换算

   如: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 指定的长度截取所得的

看看下面时间器,还是觉得可以吧

时间器 

0

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

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);

或者进行监听就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值