canvas画小球

<canvas id="can" width="600px" height="300px" style="border: 1px solid black"></canvas>

var can = document.getElementById("can")
if(can.getContext){
    var ctx = can.getContext("2d");
    var res;
    var mov = false;
    var ball = {
        x : 40,
        y : 40,
        ra : 20,
        vx : 2,
        vy : 2
    }

    //画小球
    function draw(){
        ctx.fillStyle = "blue";
        ctx.beginPath();
        // ctx.moveTo(ball.x + ball.ra,ball.y + ball.ra);
        ctx.arc(ball.x, ball.y, ball.ra,0,Math.PI*2);
        ctx.fill();
    }
    draw();

    //小球移动
    function move(){
        //ctx.clearRect(0,0,can.width,can.height);
        //画长尾
        ctx.fillStyle = "rgba(255,255,255,0.4)";
        ctx.fillRect(0,0,can.width,can.height);
        //限制小球出边界
        if(ball.x+ball.ra+ball.vx>can.width||ball.x-ball.ra<0){
            ball.vx = -ball.vx;
        }
        if(ball.y+ball.ra+ball.vy>can.height||ball.y-ball.ra<0){
            ball.vy = -ball.vy;
        }

        ball.x += ball.vx;
        ball.y += ball.vy;
        draw();
        res = window.requestAnimationFrame(move);
    }

    /*//鼠标移入开始动
    can.addEventListener("mouseover", function(){
        res = window.requestAnimationFrame(move);
    });

    //鼠标移出停止
    can.addEventListener("mouseout", function(){
        window.cancelAnimationFrame(res); //进行传参
    });*/

    //如果小球没有移动,那么会跟着鼠标移动
    can.addEventListener("mousemove", function(e){
        if(!mov){
            ctx.clearRect(0,0,can.width,can.height);
            ball.x = e.clientX;
            ball.y = e.clientY;
            draw();
        }
    });

    //点击小球,小球进行移动
    can.addEventListener("click", function(e){
        mov = true;
        if(mov){
            res = window.requestAnimationFrame(move);
        }
    });

    //鼠标离开画面,停止移动
    can.addEventListener("mouseout", function(){
        window.cancelAnimationFrame(res);
        mov = false;
    });

}else{
    alert("not support");
}
时间: 2024-07-30 20:31:50

canvas画小球的相关文章

html5学习(一)--canvas画时钟

利用空余时间学习一下html5. 1 <!doctype html> 2 <html> 3 <head></head> 4 <body> 5 <canvas id="clock" width="500" height="500"></canvas> 6 <script> 7 var clock=document.getElementById('cloc

html5中用canvas画八大行星围绕太阳转

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&

Android利用canvas画各种图形

canvas通俗的说就是一张画布,我们可以使用画笔paint,在其上面画任意的图形. 原理: 可以把canvas视为Surface的替身或者接口,图形便是绘制在Surface上的.Canvas封装了所有的绘制调用.通过Canvas, 绘制到Surface上的内容首先存储到一个内存区域(也就是对应的Bitmapz中),该Bitmap最终会呈现到窗口上. 使用: 1.Canvas可以直接new Canvas(): 2.在View中重写OnDraw()方法,里面有一个Canvas,今天讨论的内容. 方

HTML5之Canvas画正方形

1.设计源码 <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>HTML5之Canvas画正方形</title> <script type="text/javascript"> function drawFour(id) { //获取canvas元素 var canvas = document.getElementById("

HTML5之Canvas画圆形

1.设计源码 <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>HTML5之Canvas画圆形</title> </head> <body onLoad="drawFour('canvas')"> <canvas id="canvas" width="1200" height=&

樱花的季节,教大家用canvas画出飞舞的樱花树

又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果. 废话少说,先看效果. 演示效果地址:http://suohb.com/work/tree4.htm 查看演示效果 第一步,我们先画出一棵树的主体. 我画树的使用的原理是,定义一个起始点,从这个点开始,向一个角度移动一段距离.得到另一个点. 画出一条线连接两个点. 以新得到的点,依旧向这个角度,移动一段距离.得到第三个点,连写第二第三个点. 以此类推.一定步长之后,就得到一条射线. 我们根据自然界中的真实树的情况,这条线越来越细,直到

canvas画的北斗七星和大熊座

用canvas画的北斗七星和大熊座,主要用到的知识点是:canvas.定时器. html代码: 1 <body> 2 <canvas id="canvas" width="1250px" height="670px"> 3 4 </canvas> 5 6 </body> css代码: 1 body{ 2 background-color:#0B0B0D; 3 } 4 5 #canvas{ 6 pos

canvas画简单圆形动画

HTML: 1 <html> 2 <head> 3 <title>canvas画圆</title> 4 <meta http-equiv="content-type" content="text/html" charset="utf-8"> 5 <link rel="stylesheet" href="circle.css"/> 6 &

玩转html5(四)----使用canvas画一个时钟(可以动的哦!)

先给个效果图,我画的比较丑,大家可以自己美化一下, 直接上代码: <!DOCTYPE html> <meta charset="utf-8"> <html> <body> <canvas width="500" height="500" id="clock" > 您的浏览器不支持canvas </canvas> <script> //获取画布