婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當前位置:首頁 >  站長 >  編程技術 >  正文

    如何在Canvas上的圖形/圖像綁定事件監(jiān)聽的實現

     2020-10-27 13:19  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領券再下單

    這篇文章主要介紹了如何在Canvas上的圖形/圖像綁定事件監(jiān)聽的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    HTML中只能為元素/標簽綁定監(jiān)聽函數;

    Canvas繪圖中只有一個元素-canvas,每一個圖形/圖像都不是元素,不能直接進行事件綁定。

    解決辦法:“事件委托”——讓canvas監(jiān)聽所有的事件,計算事件發(fā)生坐標點,是否處于某個圖形/圖像的范圍內。

    對于標準幾何圖形可以進行事件綁定;

    對于不標準幾何圖形進行事件綁定非常麻煩。

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>canvas繪制音樂播放器</title>
        <style>
            #range1,#range2{
                height:3px;
                position: relative;
                border: 0;
                outline: 0;
                box-shadow: 0 3px #300 inset;
            }
            #range1{
                width:250px;
                left:-275px;
                top:-10px;
            }
            #range2{
                transform:rotate(-90deg);
                width:50px;
                left:-320px;
                top:-50px;
            }
        </style>
    </head>
    <body>
        <canvas id="can1" width="300px" height="500px"></canvas>
        <audio src="voice/珍惜_孫露.mp3" id="audio"></audio>
        <input type="range" min="0" max="1000" value="0" id="range1"/>
        <input type="range" min="0" max="10" step="1" value="3" id="range2"/>
    </body>

    <script>
        var ctx1=can1.getContext('2d');
        var img=new Image();
        var img1=new Image();
        var img2=new Image();
        img.src="img/bg.jpg";//繪圖背景//必須放在img1,img2前賦值,否則會蓋住
        img1.src="img/loop.jpg";
        img2.src="img/play1.png";
        var progress=0;//設置權重,判斷所有圖片是否加載完成
        img.onload=function(){//背景圖片加載完成,判斷是否所有圖片加載完成,是-->開始畫圖
            progress+=20;
            (progress==60)&&star();
        }
        img1.onload=function(){//背景圖片加載完成,判斷是否所有圖片加載完成,是-->開始畫圖
                    progress+=20;
            (progress==60)&&star();
        }
        img2.onload=function(){//背景圖片加載完成,判斷是否所有圖片加載完成,是-->開始畫圖
                    progress+=20;
            (progress==60)&&star();
        }
        //開始畫圖
        function star(){
            ctx1.drawImage(img,0,0,300,500);//繪背景圖
            loop();//繪制循環(huán)圖 img1
            ctx1.drawImage(img2,100,350,100,100);//繪圖2
        }

        //循環(huán)事件,點擊事件的全局變量
        var i=0;
        var time=null;
        var ispause=true;
        //循環(huán)函數
        function loop(){
            ctx1.save();//保存畫筆當前狀態(tài)
            ctx1.translate(150,165);//平移
            ctx1.rotate(i*Math.PI/180);//旋轉
            ctx1.drawImage(img1,-65,-65);//繪圖
            ctx1.restore();//復位畫筆之前的狀態(tài)
            //繪畫兩個圓
            ctx1.strokeStyle="#000";
            ctx1.lineWidth=20;
            ctx1.arc(150,165,85,0,2*Math.PI);
            ctx1.stroke();
            ctx1.beginPath();
            ctx1.strokeStyle="#303";
            ctx1.lineWidth=10;
            ctx1.arc(150,165,75,0,2*Math.PI);
            ctx1.stroke();

            i+=10;
            (i>=360)&&(i=0);
        }
        //點擊事件
        can1.onclick=function(e){
            var x= e.offsetX;
            var y= e.offsetY;
            //console.log(x,y);
            if((x-150)*(x-150)+(y-400)*(y-400)<=50*50*Math.PI){
                //console.log("我是圓");
                if(ispause){
                    audio.play();
                    ispause=false;
                    img2.src="img/pause1.png";
                    time=setInterval(loop,100);
                }else{
                    audio.pause();
                    //clearInterval(time);
                    //ispause=true;
                    //img2.src="img/play.png";
                }
            }

            //定時器,監(jiān)聽音樂是否播放完成,主要為了音樂播放完成停止
            setInterval(function(){
                if(audio.paused){
                    ispause=true;
                    clearInterval(time);
                    img2.src="img/play1.png";
                }
            },5);
        }

        //進度條改變事件--進度
        range1.onchange=function(){//當前進度=音樂總時長*range當前值/range最大value值
            audio.currentTime=parseFloat(range1.value*audio.duration/range1.max);
        }
        //監(jiān)聽音樂當前播放進度,時間低進度條改變事件失效(來不及改變)
        setInterval("range1.value=parseFloat(range1.max*audio.currentTime/audio.duration);",400);
        //進度條改變事件--音量
        audio.volume=0.3;
        range2.onchange=function(){
            audio.volume=range2.value/10;
        }
    </script>
    </html>

    到此這篇關于如何在Canvas上的圖形/圖像綁定事件監(jiān)聽的實現的文章就介紹到這了,更多相關Canvas圖像綁定事件監(jiān)聽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

    來源:腳本之家

    鏈接:https://www.jb51.net/html5/745327.html

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關標簽
    html5canvas

    相關文章

    • canvas實現圖片鏡像翻轉的2種方式

      這篇文章主要介紹了canvas實現圖片鏡像翻轉的2種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

      標簽:
      html5canvas
    • Canvas 幀動畫吃蘋果小游戲

      這篇文章主要介紹了Html5餅圖繪制實現統計圖的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

      標簽:
      html5canvas
    • canvas實現滑動驗證的實現示例

      這篇文章主要介紹了canvas實現滑動驗證的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

      標簽:
      html5canvas
    • 關于canvas.toDataURL 在iOS運行失敗的問題解決

      這篇文章主要介紹了關于canvas.toDataURL在iOS運行失敗的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    • 為Canvas而生:開源2D HTML5渲染引擎CutJS

      摘要:CutJS是一款專門用于跨平臺游戲開發(fā)的開源2DHTML5渲染引擎,輕量級、快速、可交互,能夠非常良好地解決Canvas所存在的一些缺陷問題,提供類似于DOM樹的數據模型,并在內部管理渲染周期和應用繪制。CutJS是一款專門用于跨平臺游戲開發(fā)的開源2DHTML5渲染引擎,輕量級、快速、可交互,

      標簽:
      html5canvas

    熱門排行

    信息推薦