SOURCE

console 命令行工具 X clear

                    
>
console
var image = new Image();
image.src = 'http://06wjin.sinaapp.com/html5/billd/img/billd-stand.png';

var sprite = function(opt) {
  var sprite_proto = {};
  sprite_proto.image = opt.image;
  sprite_proto.rect = opt.rect;
  sprite_proto.frames = opt.frames;
  sprite_proto.fps = opt.fps || 1;
  sprite_proto.current_frame_idx = 0;
  sprite_proto.next = function() {
    var cur_frame = this.frames[this.current_frame_idx];
    this.current_frame_idx += 1;
    if (this.current_frame_idx == this.frames.length) {
      this.current_frame_idx = 0;
    }
    return cur_frame;
  };
  return sprite_proto;
}

var butterfly = sprite({
  image: image,
  rect: {
    x: 0,
    y: 0,
    w: 120,
    h: 120
  },
  frames: [{
    x: 0,
    y: 0,
    w: 120,
    h: 120
  },
  {
    x: 120,
    y: 0,
    w: 120,
    h: 120
  },
  {
    x: 240,
    y: 0,
    w: 120,
    h: 120
  },
  {
    x: 360,
    y: 0,
    w: 120,
    h: 120
  },
  {
    x: 480,
    y: 0,
    w: 120,
    h: 120
  },
  {
    x: 600,
    y: 0,
    w: 120,
    h: 120
  }]
});

var canvas = document.getElementById('butterfly');
canvas.width = 120;
canvas.height = 120;

var world = function(opt) {
  var world_proto = {};
  world_proto.context = opt.context;
  world_proto.rect = opt.rect;
  world_proto.clear = function() {
    this.context.clearRect(0, 0, this.rect.w, this.rect.h);
  }
  world_proto.render = function(sprite) {
    var frame = sprite.next();
    this.context.drawImage(sprite.image, frame.x, frame.y, frame.w, frame.h, 0, 0, sprite.rect.w, sprite.rect.h);
  }
  return world_proto;
}

var my_world = world({
  context: canvas.getContext('2d'),
  rect: {
    x: 0,
    y: 0,
    w: 600,
    h: 120
  },
  fps: 30,
});

image.addEventListener('load',
function() {
  setInterval(function() {
    my_world.clear();
    my_world.render(butterfly);
  },
  20);
});
<canvas id="butterfly"></canvas>