博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5 Canvas绘制跟随鼠标移动的球
阅读量:7212 次
发布时间:2019-06-29

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

角速度应用:

 

             //获取到Canvas

            
var canvas = document.getElementById("stage");  
            
//
2d绘图版
            
var context = canvas.getContext("2d");  
            
//
球运行的速度
            
var ballSpeed=4;
            
            
            
//
字弹对象
            
var ball=
function(x,y,radius,color)
            {
                
this.x=x;
                
this.y=y;
                
this.radius=radius;
                
this.color=color;
                
//
绘制字弹
                
this.draw=
function()
                {    
                     
//
清空画板
                    context.save();        
                    context.beginPath();         
                    context.strokeStyle = 
this.color;
                    context.fillStyle = 
this.color;   
                    context.lineWidth = 5;                
                    context.arc(
this.x, 
this.y, 
this.radius, 0, 2 * Math.PI, 
false);  
                    context.closePath();                   
                    context.fill(); 
                    context.stroke();
                }
            }
            
            
            
//
中心点位置
            
var centerX=canvas.width/2;
            
var centerY=canvas.height/2;
            
            
//
创建球
            
var myBall=
new ball(centerX,centerY,10,"ff0000")
            myBall.draw();
            
            
var mouseX=centerX;
            
var mouseY=centerY;
            
//
添加按键事件
             canvas.addEventListener("mousemove", onMouseMove, 
false);  
             
             
//
记录鼠标移动到的位值
             
function onMouseMove(evt)
             {                              
                  mouseX=evt.layerX;
                 mouseY=evt.layerY;
             }            
            
            
//
动画处理
            
var drawAsync = eval(Jscex.compile("async", 
function () {
                            
                            
while(
true)
                            {    
                                context.clearRect(0, 0, canvas.width, canvas.height);                        
                                 
//
计算夹角
                                 
var dx=mouseX-myBall.x;
                                 
var dy=mouseY-myBall.y;                 
                                 
var angle=Math.atan2(dy,dx);
                                 
                                 
//
角速度
                                 myBall.x+=Math.cos(angle)*ballSpeed;
                                 myBall.y+=Math.sin(angle)*ballSpeed;                              
                                
//
重绘球
                                myBall.draw();                            
                                $await(Jscex.Async.sleep(1000/60));
                            }
                                   
                }));
                drawAsync().start();

 

作者:Louja

出处:http://loujady.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。 
 

转载于:https://www.cnblogs.com/loujady/archive/2011/12/08/2281112.html

你可能感兴趣的文章
创新性应用深度学习,IBM在语音识别领域取得了里程碑式突破
查看>>
运用供应链管理实现更快速、更高质量的交付
查看>>
EE4J项目情况汇总,微软加入Jakarta EE工作组
查看>>
华中科大提出EAT-NAS方法:提升大规模神经模型搜索速度
查看>>
Gradle发布4.7版本,支持Java 10
查看>>
大前端时代,如何做好C 端业务下的React SSR?\n
查看>>
分布式团队面临的五大问题及解决办法
查看>>
webpack 热加载你站住,我对你好奇很久了
查看>>
Scala类型系统的目的——Martin Odersky访谈(三)
查看>>
Quarkus:一个Kubernetes原生Java框架
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
多形态MVC式Web架构:完成实时响应
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
艰困之道中学到的经验教训
查看>>
Javaslang 3.0之路
查看>>
Spark Streaming中流式计算的困境与解决之道
查看>>
阿里巴巴收购以色列VR公司,大厂死磕VR为哪般?
查看>>
Oracle加快终止对以往Java版本的免费支持期
查看>>
[deviceone开发]-多种样式下拉菜单demo
查看>>
大规模集群中Docker镜像如何分发管理?试试Uber刚开源的Kraken
查看>>