html5 制作神器,HTML5/Canvas 简单的泡沫生成器

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var canvas = document.getElementById('mainc');

var context = canvas.getContext('2d');

canvas.width = $(window).width();

canvas.height = $(window).height();

var started = false;

var bubbleCount = 0;

var bubs = [];

$(document).ready(function() {

bubbleCount = $('#range').val();

start();

});

var toggle = function() {

if (started == true) {

stop();

} else {

bubbleCount = $('#range').val();

start();

}

}

var stop = function() {

clearInterval(main);

clearCanvas();

bubs = [];

started = false;

}

var start = function() {

started = true;

createBubbles();

drawBubbles(bubs);

main = setInterval(function() {

clearCanvas();

moveBubbles();

drawBubbles();

}, 16);

}

var createBubbles = function() {

for (i = 0; i < bubbleCount; i++) {

var vary = codes();

bubs.push(new bubble(vary.centerX, vary.centerY, vary.radius, vary.vx, vary.vy));

}

}

var codes = function() {

var centerX = Math.floor((Math.random() * canvas.width) + 1);

if (centerX > canvas.width - 10) {

centerX = centerX - 10;

}

if (centerX < 10) {

centerX = centerX + 10;

}

var centerY = Math.floor((Math.random() * canvas.height) + 1);

var radius = Math.floor((Math.random() * 10) + 3);

var vx = Math.floor((Math.random() * 10) - 5);

var vy = -Math.floor((Math.random() * 100) + 1);

return {

centerX: centerX,

centerY: centerY,

radius: radius,

vx: vx,

vy: vy

};

}

function bubble(centerX, centerY, radius, vx, vy) {

this.centerX = centerX;

this.centerY = centerY;

this.radius = radius;

this.vx = vx;

this.vy = vy;

return this;

}

var drawBubbles = function() {

$.each(bubs, function(i, val) {

context.beginPath();

context.arc(val.centerX, val.centerY, val.radius, 0, 2 * Math.PI, false);

context.fill = '#6ECFF6'

context.lineWidth = 1;

context.shadowColor = '#555555';

context.shadowBlur = 4;

context.shadowOffsetX = 2;

context.shadowOffsetY = 2;

context.strokeStyle = '#7D7D7D';

context.stroke();

});

}

function clearCanvas() {

context.clearRect(0, 0, canvas.width, canvas.height);

}

var moveBubbles = function() {

$.each(bubs, function(i, val) {

val.centerY += (val.vy / 50);

if (val.centerY < 0) {

val.centerY = canvas.height + 15;

}

val.centerX += (val.vx / 50);

if (val.centerX - val.radius < 0) {

val.vx = -val.vx;

}

if (val.centerX + val.radius > canvas.width) {

val.vx = -val.vx;

}

});

}

var bubblechange = function(value) {

if (value > bubs.length) {

var vary = codes();

bubs.push(new bubble(vary.centerX, vary.centerY, vary.radius, vary.vx, vary.vy));

bubblechange(value);

}

if (value < bubs.length) {

bubs.pop();

bubblechange(value);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值