1. 程式人生 > >HTML5 Canvas 繪圖方法整理 【十五、Canvas頁面互動: 滑鼠事件 】

HTML5 Canvas 繪圖方法整理 【十五、Canvas頁面互動: 滑鼠事件 】

在Canvas中 滑鼠事件分為以下三種:
1、滑鼠按下 : mousedown
2、滑鼠鬆開 : mouseup;
3、滑鼠移動 : mousemove

一般需要用到與滑鼠有關係的互動 都離不開這三種,例如常用的拖拽、移動、獲取當前位置資訊等;
不過這裡需要知道是的,Canvas 的一些複雜操作都是JavaScript的語法,利用JS來實現的功能,並不是Canvas 自己本身的。

舉一個簡單的例子:
獲取滑鼠按下時的座標點:

<script>

    window.onload=function(){
        let cans = document.getElementById("myCanvas");
        let ctx = cans.getContext("2d");

        let mouse=tools.getMouse(cans);

        cans.addEventListener("mousedown",function(){
            console.log("當前座標為:"+mouse.x+ ","+mouse.y);
        },false);

    }
</script>

效果圖:

這裡寫圖片描述

之前的程式碼引入了一個tool.js 的一個檔案,裡面程式碼屬於JavaScript範疇,在這裡就不多解釋了,直接複製過來:


		function addEvent(obj,type,handle){
            try{  // Chrome、FireFox、Opera、Safari、IE9.0及其以上版本
                obj.addEventListener(type,handle,false);
            }catch(e){
                try{  // IE8.0及其以下版本
                    obj.attachEvent('on' + type,handle);
                }catch(e){  // 早期瀏覽器
                    obj['on' + type] = handle;
                }
            }
        }

        window.tools={};

        window.tools.getMouse=function(element){
            var mouse={x:0,y:0};

            addEvent(element,"mousemove",function(e){
                var x, y;
                var e= e || window.event;

                if(e.pageX || e.pageY){ //相容做到ie9
                    x=e.pageX;
                    y=e.pageY;
                }else{
                    x=e.clientX+document.body.scrollLeft || document.documentElement.scrollLeft;
                    y=e.clientY+document.body.scrollTop || document.documentElement.scrollTop;
                }

                x-=element.offsetLeft;
                y-=element.offsetTop;

                mouse.x=x;
                mouse.y=y;
            });

            return mouse;
        };

相關推薦

HTML5 Canvas 繪圖方法整理 Canvas頁面互動 滑鼠事件

在Canvas中 滑鼠事件分為以下三種: 1、滑鼠按下 : mousedown 2、滑鼠鬆開 : mouseup; 3、滑鼠移動 : mousemove 一般需要用到與滑鼠有關係的互動 都離不開這三種,例如常用的拖拽、移動、獲取當前位置資訊等; 不過這裡需要知

HTML5 Canvas 開發 繪圖方法整理 canvas曲線圖形 / 圓形

其實在Canvas 中的基本圖形就只有兩個 : 直線圖形 和 曲線圖形 。 圓形也算是在曲線圖形中,一般畫圓的時候必須配套使用 beginPath() 和 closePath(),圓形屬於一個“閉合圖形”,先在畫布上開闢一個路徑,畫完以後結束路徑。 語法

HTML5 Canvas 開發 繪圖方法整理 canvas直線 & canvas矩形

開始繪製圖形之前有一點需要說一下,Canvas 採用的座標系是W3C的座標系 : X軸 正方向 向右; Y軸 正方向 向下; 所有的繪製方向都以這個為準。 Canvas 左上角的座標是 X :0 ; Y : 0

匿名函數lambda

數量 一個 () 匿名函數 使用 內存地址 返回 n) fun lambda關鍵字用於創建匿名函數,lambda函數能接收任意數量參數,只能返回一個表達式的值 lambda自帶返回值 用一次就清除 普通函數 def fooo(): return x**2 pr

Go基礎程式設計複合型別—陣列

概述 陣列是指一系列同一型別資料的集合。陣列中包含的每個資料被稱為陣列元素(element),一個數組包含的元素個數被稱為陣列的長度。 陣列⻓度必須是常量,且是型別的組成部分。 [2]int 和 [3]int 是不同型別 var n int = 10 var a [n]i

Oracle學習筆記序列(用於表字段值自增)

一、序列 1.序列是資料庫中為資料表提供的可以自動生成的唯一數值, 通常用來給主鍵欄位賦值。可以遞增或者遞減。作為主鍵的欄位,通常不人為賦值,需要使用序列自動生成的值。     2.序列關鍵字 sequence 序列和表一樣,都是資料庫中的物件。通常序列為一張表提供主鍵值。

1檔案的相關操作開啟檔案的方法關閉檔案write()read()檔案備份的流程小例子readlinesreadline

一、開啟方式 在python,使用open函式,可以開啟一個已經存在的檔案,或者建立一個新檔案。 open(檔名,訪問模式)         ——以只讀的方式開啟test.txt檔案 在面向物件oop語言中把【函式名()】這種形式我們叫做【方法】。 (1)文字檔

Java實用方法整理七)——File類常用方法總結

一,建立功能 1,public boolean createNewFile() throws IOException     建立新檔案 2,public boolean mkdirs()    建立新的目錄,若父目錄不存在,會自動建立 3,public boolean

文獻筆記

一:基本資訊 標題:基於UML的圖書管理系統建模 時間:2017 出版源:西華師範大學 文獻分類:文獻筆記 二:研究背景 隨著資訊科技的快速發展,圖書館的資訊化建設越顯重要。圖書管理系統能夠滿足讀者快捷、方便的對讀書進行查詢、借閱、歸還等需求,還具有可靠性高、安全性好、儲存量大,節約成本等特點。基於U

Java實用方法整理八)——遞迴

1,遞迴方法注意事項 (1)遞迴一定要有出口,否則就是死遞迴 (2)遞迴的次數不能太多,否則就記憶體溢位 (3)構造方法不能遞迴使用 2,遞迴方法建立技巧 (1)遞迴是一個方法 (2)方法中要有出口(例如:return,輸出命令等) (3)尋找規律,以程式碼實現

Spark Streaming整合Kafka使用Direct方式(使用Scala語言)

官網介紹 Kafka提供了新的consumer api 在0.8版本和0.10版本之間。0.8的整合是相容0.9和0.10的。但是0.10的整合不相容以前的版本。 這裡使用的整合是spark-streaming-kafka-0-8。官方文件 配置SparkStrea

一張圖看懂阿里雲網絡產品IPv6 解決方案

摘要: 作為國內首家全面支援IPv6的雲廠商,阿里雲12月再次推出全棧IPv6解決方案,核心產品已全面支援,協助客戶小時/天級即可完成IPv6 訪問。方案成功歷經優酷、淘寶、天貓、雙十一考驗。SLB IPv6 月流量5 個月達到20000 GB,增長200 倍;CDN IPv6 日訪問量1

H.264/AVC視訊編解碼技術詳解H.264的變換編碼(二)H.264整數變換和量化的實現

《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼

cocos2d-js官方文件cc.sys

概述 將原來的cc.Browser以及sys合併。 下面是api改造情況: //左側是新api,右側是舊api //常量 cc.sys.LANGUAGE_ENGLISH <-- cc.LANGUAGE_ENGLISH cc.sys.LANGUA

Java實用方法整理九)——IO流之InputStreamOutputStream

1,IO流概述 (1)描述 IO流是java程式用來進行裝置間的資料傳輸問題 (2)IO流分類 1)位元組流:當用windows記事本開啟待傳輸檔案時,是亂碼形式,此時用位元組流進行檔案傳輸。當然,如果你不知道檔案內容到底是啥,就完全可以用位元組流傳輸檔案,它是萬能的

OpenCV影象處理角點檢測

部落格參考 朱偉 等編著的《OpenCV影象處理程式設計例項》 ====================================================================================== 在很多應用場景中,影象畫素區域的興趣

OpenCV影象處理影象空域濾波(上)

1.空域濾波介紹 空域濾波是一種鄰域處理方法,通過直接在影象空間中對鄰域內畫素進行處理,達到平滑或銳化影象的作用。此外,在影象識別中,通過濾波還可以抽出影象的特徵作為影象識別的特徵模式。 空域濾波是影象處理領域中廣泛使用的主要工具。空域濾波主要可以分為線性濾波和非線性濾波,

Spring Boot 環境變量讀取 和 屬性對象的綁定

bean database 環境 autoconf lac autowire 屬性 boot title 凡是被spring管理的類,實現接口 EnvironmentAware 重寫方法 setEnvironment 可以在工程啟動時,獲取到系統環境變量和applicati

Linux 入門記錄Linux 網絡基本配置

包含 mac地址 圖像 鏈接 ifcfg 修改主機名 www. 永久生效 expr 一、以太網(Ethernet) 以太網(Ethernet)是一種計算機局域網技術。IEEE 組織的 IEEE 802.3 標準制定了以太網的技術標準,它規定了包括物理層的連線、電子信號和介

Hadoop學習筆記————Zookeeper的環境搭建

per ip地址 整數 zookeep keep ado ima leader選舉 環境搭建 linux中/opt一般用來存放應用/var目錄一般用來存放日誌 sample為樣例文件,復制一份zoo.cfg文件 配置zoo文件,id為服務器id(整數),host為