zoukankan      html  css  js  c++  java
  • canvas 拖拽实现

    Canvas

    • 依赖分辨率
    • 不支持事件处理器  
    • 弱的文本渲染能力
    • 能够以 .png 或 .jpg 格式保存结果图像
    • 最适合图像密集型的游戏,其中的许多对象会被频繁重绘 

    SVG

    • 不依赖分辨率
    • 支持事件处理器
    • 最适合带有大型渲染区域的应用程序(比如谷歌地图)
    • 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
    • 不适合游戏应用

    1 canvas:不支持事件处理,所以必须有一部分逻辑来做 来做模拟事件 和dom对象的作用。一般会使用一个基本的canvas库

    2 canvas: 弱的文本渲染能力(canvas没有文本类型的概念)

    3 svg: 对于浏览器来说 dom的复杂度会直接影响浏览器的效率。(崩溃 白屏 死机 )

     写个canvas 拖拽的demo

         var Draw={
             init:function(){
                 this.cObj=document.getElementById("myCanvas").getContext("2d");
                 this.event()
                 this.draw.prototype=this
                 this.p=new  this.draw(45,45,70,70,"red")
    /*             window.setTimeout(function(){
                     this.p.draw(45,145,70,70,"red")
                 }.bind(this),2000)*/
             },
             draw:function(x,y,w,h,color){
                 this.cObj.clearRect(this.x-1,this.y-1,this.w+2,this.h+2);
                 this.x=x
                 this.y=y
                 this.w=w
                 this.h=h
                 this.color=color
                 this.cObj.strokeStyle=this.color
                 this.cObj.strokeRect(this.x,this.y,this.w,this.h);
             },
             OnMouseMove:function(evt){
                 if(this.p.isDown){
                     var X=evt.layerX-this.p.w/2;
                     var Y=evt.layerY-this.p.h/2;
                     this.p.draw(X,Y,70,70,"red");
                 }
     
             },
             OnMouseDown:function(evt){
                 var X=evt.layerX;
                 var Y=evt.layerY;
                 if(X<this.p.x+this.p.w&&X>this.p.x)
                 {
                     if(Y<this.p.y+this.p.h&&Y>this.p.y){
                         this.p.isDown=true;
                     }
                 }
                 else
                 {
                    this.p.isDown=false;
                 }
             },
             OnMouseUp:function(){
                 this.p.isDown=false
             },
             event:function(){
                 var canvas=document.getElementById("myCanvas")
                 canvas.addEventListener("mousedown",this.OnMouseDown.bind(this),false);
                 canvas.addEventListener("mousemove",this.OnMouseMove.bind(this),false);
                 canvas.addEventListener("mouseup",this.OnMouseUp.bind(this),false);
             }
         }
          Draw.init()
    

      

      

      

  • 相关阅读:
    传统文化相关词组(陆续补充)
    面试题 17.09. 第 k 个数
    1544. 整理字符串
    SQL Server 2008 R2 数据库之间的数据同步热备份
    SQLServer数据库同步准实时解决方案
    SQL Server 用链接服务器 同步MySQL
    SqlServer数据库同步方案详解(包括跨网段)
    键值修饰符v-on:keyup.enter
    事件修饰符
    内连处理器里的方法2.html
  • 原文地址:https://www.cnblogs.com/breakdown/p/4155826.html
Copyright © 2011-2022 走看看