最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript+canvas實(shí)現(xiàn)框內(nèi)跳動(dòng)小球

 更新時(shí)間:2022年04月12日 15:38:27   作者:麥兜:)  
這篇文章主要為大家詳細(xì)介紹了JavaScript+canvas實(shí)現(xiàn)框內(nèi)跳動(dòng)小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript+canvas實(shí)現(xiàn)框內(nèi)跳動(dòng)小球的具體代碼,供大家參考,具體內(nèi)容如下

效果如下:

思路:

1.制定畫布,確定好坐標(biāo)
2.繪制出圓形小球
3.給圓一個(gè)原始坐標(biāo),xy軸的速度
4.每20毫秒刷新一次,達(dá)到變化的目的
5.判斷邊緣

全部代碼及釋義如下:

<!DOCTYPE html>
<html lang="en">

<head>
? <meta charset="UTF-8">
? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? <meta http-equiv="X-UA-Compatible" content="ie=edge">
? <title>Document</title>
</head>

<body>
? <canvas id="canvas" style="border:1px solid #aaa;display:block;margin: 50px auto;">
? ? 當(dāng)前瀏覽器不支持canvas,請(qǐng)更新瀏覽器或者升級(jí)瀏覽器后再試
? </canvas>

? <script>
? ? // x: 小球原始x坐標(biāo),y: 小球原始y坐標(biāo), r: 小球半徑, vx: x軸速度,vy: y軸的速度 (速度都以向量表示,所以可為負(fù)數(shù))
? ? var ball = { x: 512, y: 100, r: 20, vx: -8, vy: 8, color: '#005588' }
? ? window.onload = function () {
? ? ? var canvas = document.getElementById("canvas");

? ? ? // 制定canvas畫布的大小
? ? ? canvas.width = 860;
? ? ? canvas.height = 600;
? ? ? // 判斷瀏覽器是否支持canvas
? ? ? if (canvas.getContext("2d")) {
? ? ? ? // 下面所有調(diào)用的函數(shù)都是基于context這個(gè)上下文環(huán)境來(lái)進(jìn)行的
? ? ? ? var context = canvas.getContext("2d");

? ? ? ? setInterval(() => {
? ? ? ? ? render(context)
? ? ? ? ? update()
? ? ? ? }, 20);
? ? ? } else {
? ? ? ? alert("當(dāng)前瀏覽器不支持canvas,請(qǐng)更新瀏覽器或者升級(jí)瀏覽器后再試");
? ? ? }
? ? };
? ? //十六進(jìn)制顏色隨機(jī)
? ? function color16() {
? ? ? var r = Math.floor(Math.random() * 256);
? ? ? var g = Math.floor(Math.random() * 256);
? ? ? var b = Math.floor(Math.random() * 256);
? ? ? var color = '#' + r.toString(16) + g.toString(16) + b.toString(16);
? ? ? return color;
? ? }
? ? // 小球的坐標(biāo)的刷新
? ? function update() {
? ? ? ball.x += ball.vx // x軸坐標(biāo) vx是x軸的速度,勻速增加
? ? ? ball.y += ball.vy ?// y軸坐標(biāo) 由于g的原因,速度是勻變速
? ? ??
? ? ? // 觸底的條件
? ? ? if (ball.y >= canvas.height - ball.r) {
? ? ? ? ball.color = color16()
? ? ? ? ball.y = canvas.height - ball.r ? ?// 觸下底
? ? ? ? ball.vy = -ball.vy
? ? ? } else if (ball.x <= ball.r) {
? ? ? ? ball.color = color16()
? ? ? ? ball.x = ball.r // 觸左
? ? ? ? ball.vx = -ball.vx
? ? ? } else if (ball.x >= canvas.width - ball.r) {
? ? ? ? ball.color = color16()
? ? ? ? ball.x = canvas.width - ball.r ?// 觸右
? ? ? ? ball.vx = - ball.vx
? ? ? } else if (ball.y <= ball.r) {
? ? ? ? ball.color = color16()
? ? ? ? ball.y = ball.r ? // 觸上
? ? ? ? ball.vy = -ball.vy
? ? ? }
? ? }
? ? // 繪制圓形小球
? ? function render(cxt) {
? ? ? // 利用clearRect,清空畫布
? ? ? cxt.clearRect(0, 0, cxt.canvas.width, cxt.canvas.height)

? ? ? cxt.fillStyle = ball.color
? ? ? cxt.beginPath()
? ? ? //context.arc(圓心橫坐標(biāo), 原型縱坐標(biāo), 半徑的長(zhǎng)度,繪制的起點(diǎn), 繪制的終點(diǎn))
? ? ? cxt.arc(ball.x, ball.y, ball.r, 0, 2 * Math.PI)
? ? ? cxt.closePath()

? ? ? cxt.fill()
? ? }
? </script>
</body>

</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序多音頻播放進(jìn)度條問(wèn)題

    微信小程序多音頻播放進(jìn)度條問(wèn)題

    小程序的音頻組件居然沒(méi)有進(jìn)度控制的功能,需要我們自己實(shí)現(xiàn),下面腳本之家小編給大家?guī)?lái)了微信小程序多音頻播放進(jìn)度條問(wèn)題,感興趣的朋友一起看看吧
    2018-08-08
  • js精準(zhǔn)的倒計(jì)時(shí)函數(shù)分享

    js精準(zhǔn)的倒計(jì)時(shí)函數(shù)分享

    這篇文章主要為大家分享了js實(shí)現(xiàn)精準(zhǔn)的倒計(jì)時(shí)函數(shù),如何實(shí)現(xiàn)倒計(jì)時(shí)模塊,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 在JavaScript中查找字符串中最長(zhǎng)單詞的三種方法(推薦)

    在JavaScript中查找字符串中最長(zhǎng)單詞的三種方法(推薦)

    這篇文章主要介紹了在JavaScript中查找字符串中最長(zhǎng)單詞的三種方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • JS代碼計(jì)算LocalStorage容量示例詳解

    JS代碼計(jì)算LocalStorage容量示例詳解

    這篇文章主要為大家介紹了JS代碼計(jì)算LocalStorage容量的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • webpack中使用iconfont字體圖標(biāo)的方法

    webpack中使用iconfont字體圖標(biāo)的方法

    下面小編就為大家分享一篇webpack中使用iconfont字體圖標(biāo)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • js插件YprogressBar實(shí)現(xiàn)漂亮的進(jìn)度條效果

    js插件YprogressBar實(shí)現(xiàn)漂亮的進(jìn)度條效果

    ProgressBar.js 是一個(gè)借助動(dòng)態(tài) SVG 路徑的漂亮的,響應(yīng)式的進(jìn)度條效果。使用 ProgressBar.js 可以很容易地創(chuàng)建任意形狀的進(jìn)度條。這個(gè) JavaScript 庫(kù)提供線條,圓形和方形等幾個(gè)內(nèi)置的形狀,但你可使用 Illustrator 或任何其它的矢量圖形編輯器創(chuàng)建自己的進(jìn)度條效果。
    2015-04-04
  • 一個(gè)網(wǎng)頁(yè)標(biāo)題title的閃動(dòng)提示效果實(shí)現(xiàn)思路

    一個(gè)網(wǎng)頁(yè)標(biāo)題title的閃動(dòng)提示效果實(shí)現(xiàn)思路

    通過(guò)網(wǎng)頁(yè)title來(lái)提示用戶有新消息這個(gè)功能很常見(jiàn),下面有個(gè)不錯(cuò)的示例,大家可以參考下
    2014-03-03
  • js日期聯(lián)動(dòng)示例

    js日期聯(lián)動(dòng)示例

    這篇文章主要介紹了js實(shí)現(xiàn)的日期聯(lián)動(dòng)效果,調(diào)試需加入jquery文件,需要的朋友可以參考下
    2014-05-05
  • 用js來(lái)解決ajax讀取頁(yè)面亂碼

    用js來(lái)解決ajax讀取頁(yè)面亂碼

    前兩天寫過(guò)服務(wù)端的,可以解決所有的瀏覽器讀取中文亂碼的問(wèn)題,總是有點(diǎn)不爽,憋了一天,想出這個(gè)東東來(lái),能解決firefox和ie讀中文亂碼的問(wèn)題,opera不行,chome也沒(méi)測(cè)試,暫且放著吧。
    2010-11-11
  • 關(guān)于include標(biāo)簽導(dǎo)致js路徑找不到的問(wèn)題分析及解決

    關(guān)于include標(biāo)簽導(dǎo)致js路徑找不到的問(wèn)題分析及解決

    本文為大家詳細(xì)介紹下關(guān)于使用jsp:include標(biāo)簽及<%@ include標(biāo)簽時(shí)要注意的事項(xiàng)以及實(shí)測(cè)發(fā)現(xiàn)問(wèn)題并解決問(wèn)題的全過(guò)程,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助
    2013-07-07

最新評(píng)論

安达市| 台北县| 荣昌县| 古田县| 东阿县| 嘉禾县| 古田县| 通渭县| 和平县| 弋阳县| 礼泉县| 吴川市| 布尔津县| 渑池县| 孟州市| 明光市| 玛曲县| 江油市| 科技| 海林市| 年辖:市辖区| 额敏县| 东山县| 永春县| 垦利县| 平湖市| 托里县| 商水县| 兰溪市| 塘沽区| 沙坪坝区| 孙吴县| 九龙城区| 天镇县| 从江县| 十堰市| 航空| 乐业县| 太康县| 沿河| 琼结县|