首页 > HTML5/CSS3

H5 canvas 小demo之小球的随机运动

发表于2015-07-20 14:20:21| --次阅读| 来源webkfa| 作者html5,css3

摘要:1:结构之html----balls.html 1 2 3 4 5 6 7 8 9 10 11 12 13 canvas控件14 15 white16 black17 ...

1:结构之html----balls.html

1 <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" src="main.js"></script>
</head>
<body>
<div id="container">
    <canvas id="canvas"></canvas>
    <div id="controller">
        <h2>canvas控件</h2>
        <a href="javascript:void(0);" id="motion"></a>
        <a href="javascript:void(0);" id="white">white</a>
        <a href="javascript:void(0);" id="black">black</a>
    </div>

</div>

</body>
</html>

2:样式之css-----style.css

 

1 #container{
    width:800px;
    height:600px;
    margin: 10px auto;
    position: relative;
}
#canvas{
    display: block;
    border: 1px solid #808080;
    margin:10px auto;
}
h2{
    text-align: center;
}
#controller{
    border-radius: 20px;
    border: 1px solid grey;
    width: 200px;
    height:100px;
    position: absolute;
    top:10px;
    left:10px;
}
#controller a{
    background: #808080;
    color:#ffffff;
    text-decoration: none;
    line-height: 35px;
    text-align: center;
    position: absolute;
    display: block;
    width:50px;
    height:35px;
    border:1px solid #808080;
    border-radius: 20px;
}
#motion{
    top:55px;
    left:10px;
}
#white{
    top:55px;
    left:70px;
}
#black{
    top:55px;
    left:130px;
}

 

3:行为之javascript----main.js

/**
 * Created by jackpan on 2015/4/18.
 */
var canvas;
var context;
var width;
var height;
var balls=[];
var isMove=true;
var motion;
var white;
var black;
var themeColor;
window.onload= function () {
    canvas=document.getElementById("canvas");
    motion=document.getElementById("motion");
    white=document.getElementById("white");
    black=document.getElementById("black");
    motion.innerHTML="运动";
    context=canvas.getContext("2d");
    canvas.width=800;
    canvas.height=600;
    width=canvas.width;
    height=canvas.height;
    context.globalAlpha=0.7;
    for(var i=0;i<50;i++){
        var R=Math.floor(Math.random()*255);
        var G=Math.floor(Math.random()*255);
        var B=Math.floor(Math.random()*255);
        var radius=Math.random()*40+10;
        var ball={
            x:Math.random()*(width-2*radius)+radius,
            y:Math.random()*(height-2*radius)+radius,
            vx:Math.pow(-1,Math.ceil(Math.random()*2))*Math.random()*8+2,
            vy:Math.pow(-1,Math.ceil(Math.random()*2))*Math.random()*4+2,
            radius:radius,
            color:"rgb("+R+","+G+","+B+")"
        }
        balls[i]=ball;
    }
    motion.onclick= function () {
        if(isMove){
            isMove=false;
            motion.innerText="静止";
        }else{
            isMove=true;
            motion.innerHTML="运动";
        }
    }
    white.onclick= function () {
        themeColor="white";
    }
    black.onclick= function () {
        themeColor="black";
    }
    setInterval(
        function () {
            drawBall();
           if(isMove){
               updateBall();
           }
        },40
    )
}
function drawBall(){
    context.clearRect(0,0,width,height);
    if(themeColor=="black"){
        context.fillStyle=themeColor;
        context.fillRect(0,0,width,height);
    }
    for(var i=0;i<balls.length;i++){
        context.globalCompositeOperation="lighter";
        context.beginPath();
        context.arc(balls[i].x,balls[i].y,balls[i].radius,0,Math.PI*2,true);
        context.closePath();
        context.fillStyle=balls[i].color;
        context.fill();
    }
}
function updateBall(){
    for(var i=0;i<balls.length;i++){
        var aBall=balls[i];
        aBall.x+=aBall.vx;
        aBall.y+=aBall.vy;
        if(aBall.x<aBall.radius || aBall.x>width-aBall.radius){
            aBall.vx=-aBall.vx;
        }
        if(aBall.y<aBall.radius || aBall.y>height-aBall.radius){
            aBall.vy=-aBall.vy;
        }

    }
}

4:效果静态图展示

  

相关文章

猜你喜欢

学到老在线代码浏览器 关闭浏览
友情链接: hao123 360导航 搜狗网址导航 114啦网址导航 博客大全
Copyright © 1999-2014, WEBKFA.COM, All Rights Reserved  京ICP备14034497号-1