Flash 游戏设计笔记:计时器制作
?在游戲當(dāng)中,時(shí)間器是伴隨游戲一直進(jìn)行的,有時(shí)候我們在制作小游戲的時(shí)候希望可以在計(jì)算這個(gè)游戲所玩的時(shí)間,那么時(shí)間器的制作是我們要解決的問題;關(guān)于時(shí)間其實(shí)關(guān)鍵一點(diǎn)要知道怎么換算。
?
一,單位換算
?? 如:1小時(shí)=60分
???????? 1小時(shí)=3600秒
???????? 1分=60秒
???????? 1秒=1/60 分
?????????1秒=1/3600小時(shí)
?????????1秒=1000毫秒;
?
有了這樣的換算后,我們就可以制作我們所需要的時(shí)間器,首先我們導(dǎo)入i
mport flash.utils.getTimer;
?
getTimer函數(shù)可以計(jì)算出運(yùn)行時(shí)候所需要的毫秒數(shù)。
?
private var lasttime:int;//定義個(gè)變量用于上一點(diǎn)的時(shí)間
public function init():void
{
?? lasttime=getTimer();//計(jì)算出運(yùn)行程序所需要的時(shí)間
?
}
?
addEventListener(Event.ENTER_FRAME,Run);
?
private function Run(e:Event):void
??{
???
???SetTime();//時(shí)間器
??}
?
private function SetTime():void{var timepast:int=getTimer()-lasttime; //經(jīng)歷了幾秒。 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);}
?
簡單的效果這樣就出來了。
要進(jìn)行一些判斷,當(dāng)second 大于60的時(shí)候,由于second是一直遞增的,時(shí)間秒的區(qū)間是【0,60】所以當(dāng)60來的時(shí)候
我們就改將它減去 分 *60 這樣時(shí)間又再次顯示回原來的狀態(tài)了
?
?
二 00-00-00格式的處理
showTime.text=String(100+hour).substr(1,2)+":"+String(fen+100).substr(1,2)+":"+String(second+100).substr(1,2);
?
我們使用了String類一個(gè)方法substr來截取我們所需要的信息:從1開始索引開始截取后面的兩位,這樣就可以變成了這種格式了 。
?
substr(startIndex:Number = 0, len:Number = 0x7fffffff):String 返回一個(gè)子字符串,該子字符串中的字符是通過從指定的 startIndex 開始,按照 len 指定的長度截取所得的?
看看下面時(shí)間器,還是覺得可以吧
?
?
0
?
?
源代碼:可以進(jìn)行修改一下
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;//小時(shí)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;//毫秒運(yùn)算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;//毫秒運(yùn)算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);}} }
?
這里有兩個(gè)方法,在創(chuàng)建實(shí)例化后,可以自動(dòng)生成上面的格式,當(dāng)一個(gè)mc來使用,只要實(shí)例化就可以。
var time:GameTime=new GameTime()
addChild(time);
?
或者進(jìn)行監(jiān)聽就可以
總結(jié)
以上是生活随笔為你收集整理的Flash 游戏设计笔记:计时器制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最新WIN_GHO系统(及OFC_PS8
- 下一篇: Little happiness mat