日期:2014-05-17 浏览次数:20838 次
var Stage = {};
Stage.paint(){
  //根据舞台上每个小丑当前时刻的状态,重绘舞台
}
function Sprite(){
  this.go = function(){
    setInterval(goAhead,100);
    function goAhead(){
      //一些状态改变代码.......
      Stage.paint();//要求舞台重绘
    }
  }
}
function Sprite2(){
  This.go = function(){
    setInterval(goAhead,100);
    function goAhead(){
      //一些状态改变代码.......
      Stage.paint();//要求舞台重绘
    }
  }
}
        另外一种设计模式是,只有一个时间线,每隔固定时间显示一祯,就是每隔一定时间舞台Stage步进一祯,步进的时候舞台上所有元件同时步进一次,任何元件要产生动画的时候,加入到这个时间主线中,跟着Stage步进而步进,这样的帧频是固定的,即使在不产生动画的情况下,Stage也是在不停地重绘着var Stage = {};
Stage.players = {
  //...将小丑添加至舞台
};
Stage.step(){
  for(i in Stage.players){
    Stage.players.step();//舞台上每个小丑步进
  }
  setTimeout(this.step,100);//舞台每隔一定时间步进
}
function Sprite(){
  this.step = function(){
    //......步进
  }
}<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title></title>
</head>
<body>
<canvas id='canvas' width="800" height="800"></canvas>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var kit = {};
var FPS = 30;
kit.imgArr = ["img/player.gif","img/bg.png"];
kit.load = function(){
  this.img = [];
  for(i in this.imgArr){
  this.img[i] = new Image();
  this.img[i].src = this.imgArr[i];
  }
}
kit.load();
var ctx = document.getElementById("canvas").getContext("2d");
var controller = {};//控制对象
controller.stage = {};//舞台对象
controller.stage.players = {//舞台上的小丑们
          scen:new Scen(),
  player1:new Sprite()//一个小精灵
}
controller.stage.paint = function(){//绘制桢
  ctx.fillStyle = "#fff";//清除前桢
  ctx.fillRect(0,0,800,800);
  for(every in this.players){
    this.players[every].paint();//小丑们添加