github: https://github.com/miyiyiy/tinyHeart
1. 页面结果搭建和背景绘制
在id='allcanvas'内建立两个画布
连个canvas分别画背景图案和动画图案。
var can1,can2//两个画布
var ctx1,ctx2//两个画笔
利用z-index来定义画布的前后
document.body.οnlοad=game;//初始化游戏
function game () {
init();
lastTime=Date.now();//上次时间
deltaTime=0;//时间间隔
gameloop();//刷新界面
}
function init () {
can1=document.getElementById('canvas1');//fishes,dust,UI,circle
can2=document.getElementById('canvas2');//background,ane,fruits
cxt1=can1.getContext('2d');
cxt2=can2.getContext('2d');
canWidth=can1.width;
canHeight=can1.height;}
window.requestAnimFrame(gameloop);//setInterval, setTimeout刷新
配置如下:
window.requestAnimFrame = (function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
return window.setTimeout(callback, 1000 / 60);
};
})();
//时间设置
var now=Date.now();
deltaTime=now-lastTime;
lastTime=now;
定义背景图片并加载
var bgPic=new Image();
bgPic.src='./src/background.jpg';
function drawbackground () {
cxt2.drawImage(bgPic,0,0,canWidth,canHeight);
}
beginPath()、closePath()、strokeStyle()、stroke()、lineWidth()、lineCap;//绘制函数
先设置静态海葵
var aneObj=function(){
this.x=[];
this.y=[];this.len=[];
}
aneObj.prototype.num=50;
aneObj.prototype.draw=function(){
//beginPath,moveTo,lineTo,stroke,strokeStyle,lineWidth;//globalAlpha画板的透明度
ctx2.save()
//海葵的样式,透明度等等
ctx2.restore();
}
aneObj.prototype.init=function(){
for(var i=0;i
在此静态的海葵就绘制成功。再然后利用贝塞尔曲线来绘制海葵的动画
有三个点根部点,控制点和终点,根部点和控制点不变、终点进行变化利用正弦进行变化
control point、start point、end point(sin)
将上述代码变化如下:
var aneObj=function () {
//startpoint control point, end point
this.rootx=[];
this.headx=[];
this.heady=[];
this.alpha=0;//角度
this.amp=[];//振幅
};
aneObj.prototype.num = 50;
aneObj.prototype.init=function () {
for(var i=0;i
随机生成,并设置透明度,并随海藻一样进行摆动
7. 其他--设计到游戏策划
大鱼喂小鱼特效
大鱼小鱼摇尾巴
大鱼小鱼眨眼睛
大鱼小鱼身体变白
游戏分值计算