博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5 做波形运动的小球
阅读量:6861 次
发布时间:2019-06-26

本文共 1456 字,大约阅读时间需要 4 分钟。

波形运动:

    
var canvas=document.getElementById("ballBroad");
            
var context=canvas.getContext("2d");
            
//
角度
            
var angle=0;
            
//
Y步长
            
var speedY=0.1;
            
//
x步长
            
var speedX=3;
            
//
刷新频率
            
var frames=1000/60;
            
//
球对象
            
var Ball=
function(radius,color,x,y)
            {
                
this.radius=radius;
                
this.color=color;
                
this.x=x;
                
this.y=y;
            }
            
//
中心点
            
var centerX=canvas.width/2;
            
var centerY=canvas.height/2;
            
//
存放小球走过的点
            
var points=[];
            
            
            
//
创建一个球 
            
var newBall=
new Ball(20,"#ff000",0,centerY);
            
            
//
在画板中间绘制球 
            DrawBall(newBall);
            
//
存放
            points.push({x:newBall.x,y:newBall.y});
            
            
            
//
让球平稳的动起来
            
var drawAsync = eval(Jscex.compile("async", 
function () {
                        
while(
true)
                        {
                            newBall.y=centerY+Math.sin(angle)*centerY;
                            newBall.x+=speedX;
                            
if(newBall.x>canvas.width)
                            {
                                newBall.x=0;
                                points=[];
                            }
                            angle+=speedY;
                            DrawBall(newBall);
                            
//
存放小球的点
                            points.push({x:newBall.x,y:newBall.y});
                            
                            
//
绘制线条
                            DrawBallLine();
                            
//
每秒60次
                            $await(Jscex.Async.sleep(frames));
                        }                                
            }));
           drawAsync().start();
           
           
function DrawBall(ball)
           {
               context.clearRect(0, 0, canvas.width, canvas.height);
               
//
在画板中间绘制球 
            context.beginPath();
            context.arc(ball.x, ball.y, newBall.radius, 0, 2 * Math.PI, 
false); 
            context.fillStyle = ball.color;
            context.fill();
            context.lineWidth = 5;
            context.strokeStyle = "#ff0000";
            context.stroke();
           }
           
//
绘制小球的移动轨迹
           
function DrawBallLine()
           {
                    
for(
var i=0;i<points.length;i++)
                    {
                        
if(i==0)
                        {
                            context.moveTo(points[i].x,points[i].y)
                        }
                        context.lineTo(points[i].x,points[i].y)
                        context.stroke();
                    }
           }
            

转载于:https://www.cnblogs.com/loujady/archive/2011/12/07/2278898.html

你可能感兴趣的文章
LCS 模板+规定长度的上升子序列个数(数值不同为不同)
查看>>
lua表排序
查看>>
[git]本地分支关联远程分支
查看>>
SQL Server:属性ErrorLogFile 不可用于JobServer“[SERVER]......”的问题时的解决方案
查看>>
浅解多线程(二)
查看>>
div+css
查看>>
国际市场的内容体验调查
查看>>
ASP.NET文件的上传下载提交分页
查看>>
【leetcode】388. Longest Absolute File Path
查看>>
webstorm注册码
查看>>
shell编程(2)
查看>>
TensorFlow中的基本概念
查看>>
解决y7000笔记本ubuntu下wifi无法连接问题
查看>>
vue的生命周期
查看>>
项目成功先从制定项目计划开始
查看>>
转:String StringBuffer StringBuilder区别
查看>>
浅谈javascript函数,变量声明及作用域
查看>>
基于C/S模式的程序更新-启动
查看>>
solr8.0的简单搭建(一)
查看>>
lamba表达式和匿名委托
查看>>