主頁 > 前端設計 > 1小時開發貪吃蛇,原來編程如此簡單

1小時開發貪吃蛇,原來編程如此簡單

2021-04-17 11:21:04 前端設計

1小時開發貪吃蛇,原來編程如此簡單

  • 材料準備
    • 1. 開發環境準備
    • 2. 代碼基礎準備
    • 3. 涉及到的樣式說明
  • 正式編碼,一共分為
    • 1. 頁面基礎框架撰寫
    • 2. 樣式撰寫
    • 3. 通過陣列展示
          • 3.1 思路
          • 3.2 老實孩子的寫法
          • 3.3 通過回圈來初始化
          • 3.4 陣列通過畫布來呈現
    • 4. 向右移動第一顆
          • 4.1 重新初始化一下代碼
          • 4.2 添加定時任務
          • 4.3 讓小方塊動起來
    • 5. 通過方向控制移動
          • 5.1添加方向變數
          • 5.2 添加鍵盤監聽方法
          • 5.3 通過方向變數控制走向
    • 6. 多顆如何移動(第一種方法)
    • 7. 多顆如何移動(第二種方法)
    • 8. 隨機出現食物
    • 9. 吃到食物如何處理
    • 10. 解決隨機出現食物bug
    • 11. 判斷游戲失敗:出邊界
    • 12. 判斷游戲失敗:撞到自己
    • 13. 處理一些其他bug
          • 第一個bug
          • 第二個bug

本系列實體教程第二趴,作者僅僅想通過一些實際案例,帶領大家了解編程,編程其實如此簡單,

在學習本教程之前,需要有兩個準備,首先,您需要有一點點的編程基礎,比如什么是變數、條件判斷、回圈等,其次,請先玩一玩貪吃蛇這個游戲,如果沒有玩過,是不太容易理解其中的一些演算法的,

當然,也可以先學習一下第一趴 1小時開發2048,原來游戲如此簡單,

我能給您的保證就是,通過本文,您一定可以自己手動編碼一個貪吃蛇的游戲,如果不行,請在評論區轟炸我~

材料準備

  1. 開發環境準備
  2. 代碼基礎準備
  3. 涉及到的樣式

1. 開發環境準備

首先,您需要先有一臺電腦,如果是手機查看,就算了,,,然后,一個代碼編輯器,可以是記事本,也可以是IDEA,這里推薦使用visual studio code編輯器和chrome瀏覽器,至于visual studio code是啥,請自行百度了,
就是這么簡單,開發環境已經準備好了,

2. 代碼基礎準備

  • 完全沒有基礎的同學,可以先看看w3school關于html的教程、CSS的教程、JS的教程,比較不是僅僅寫個hello world,還有需要有一丟丟基礎的,
  • 教程中,不是使用的原生js,而是基于Jquery進行的編碼,使用了一些Jquery的語法,請參考:Jquery的教程

3. 涉及到的樣式說明

  • width 寬度

  • height 高度

  • background-color 設定背景顏色

  • float 浮動模式

  • .content 代表某個標簽下class屬性為content,是一個css選擇器,以下是例子:

<div class="content"></div>

好了,我們開始進入正題,進入編碼環節

正式編碼,一共分為

  1. 頁面基礎框架撰寫
  2. 樣式撰寫
  3. 通過陣列展示
  4. 向右移動第一顆
  5. 通過方向控制移動
  6. 多顆如何移動(第一種方法)
  7. 多顆如何移動(第二種方法)
  8. 隨機出現食物
  9. 吃到食物如何處理
  10. 解決隨機出現食物bug
  11. 判斷游戲失敗:出邊界
  12. 判斷游戲失敗:撞到自己
  13. 處理一些其他bug

1. 頁面基礎框架撰寫

圖片 1

詳見上圖,這是一個最基礎的html代碼,分為三塊,頁面、css樣式、js邏輯,請參考圖中的注釋,直接瀏覽器打開本檔案,即可看到效果,(可按F12,調出chrome的控制臺)
再次說明,html基礎標簽和結構,請參考html的教程

2. 樣式撰寫

圖片 2

我們設定整個幕布大小是400px * 400px,每個小塊是10 * 10,每行每列就是40個塊,一共1600個 ,分別定義出蛇身體顏色黑色、蛇頭顏色紅色、食物顏色綠色,整體樣式設定較為交單,具體請參考代碼注釋,重繪運行,查看效果,

3. 通過陣列展示

3.1 思路

多說幾句,關于這個小標題,通過陣列展示,其實具有了編程思維的同學,應該很好理解,但是對于沒有基礎的同學,就有點難了,先看這張圖:

圖片 3

游戲中貪吃蛇,就是一條蜿蜒的小蛇,沿著自己走過的路,一步一步往前挪動,我們理解其位在一個二維陣列中,連續的一系列方格代表蛇,感覺自己沒說清楚,但是不理解也沒有關系,編程就是,編著編著就會了,先往下看,

3.2 老實孩子的寫法

之前通過樣式,我們已經清楚了,我們一共是一個40*40,一共1600個格子的二維陣列,先來直觀的感受下,有多少,

圖片 4

每一行40個0,一共40行,代碼冗余了,反正我是看不下去,所以簡化它,

3.3 通過回圈來初始化

這里我們先定義了一個總的gameArr變數,用于存放所有塊,是一個二維陣列,Array(40)代表生成了一個40位長度的陣列,然后,我們遍歷這個資料,目前這個陣列還是一維的,里面所有元素都是null,所以,我們遍歷后,給每個遍歷值gameArr[i]又賦值Array(40),然后再次遍歷,通過雙層遍歷,設定gameArr[i][j]等于0,就這樣,完成了陣列的初始化,請看下圖代碼,

圖片 5

3.4 陣列通過畫布來呈現

我們通過陣列,在畫布上將1600個div呈現出來,雙層回圈遍歷,仔細看代碼即可,通過瀏覽器,將滑鼠移動到對應的代碼上,就可以看到頁面上對應的div呈現出來,

圖片 6

現在,我們僅僅呈現了空白,那么其他值,我們也需要讓其呈現出來,

0代表沒有任何東西
1代表蛇的身子
2代表蛇頭
9代表食物
這些數值的含義,都是我們自己定義的而已,可以改為其他的,

通過判斷gameArr[i][j]的值,拼接不同的div,設定是設定好了,但是看不到效果呢,不著急,我們設定一些示例代碼即可,請看代碼:

圖片 7

然后我們分別設定幾個位置為1、2、9,重繪頁面,即可看到內容呈現出來了,

圖片 8

4. 向右移動第一顆

4.1 重新初始化一下代碼

好了,準備作業都做好了,現在開始有意思的了,首先我們僅設定1個蛇塊,其余的去掉,

首先,我們定義了一個snakeItem作為蛇身,初始化位置為第11行,第11列(js陣列下標是從0開始的),然后將對應的gameArr的值,設定為1,snakeItem主要是用于表示蛇的坐標,用于計算,而gameArr是用于最終展示畫圖的,所以需要根據snakeItem修改gameArr對應的值,重繪頁面后結果,請參考圖片,

圖片 9

4.2 添加定時任務

好了,現在,我們需要讓其動起來了,這里就不將原理了,設計異步、并行等概念,畢竟我們是實際編程例子,不講基礎(其實是我也說不清,,,)

涉及到JavaScript的定時執行方法,setInterval,該方法涉及兩個引數,第一個引數是需要執行的方法,第二個引數是多久執行一次,單位是毫秒,請參考下面的代碼

圖片 10

以上代碼,會不停的在控制臺列印出日志,

4.3 讓小方塊動起來

關鍵的來了,如何讓小方塊動起來呢,向右移動,其實就是snakeItem的列坐標有之前的10,變為11,定時任務中,就是不停的+1,剛剛說了snakeItem是用于計算的,修改了snakeItem后,還要更新gameArr,然后執行drawGame,才能重繪游戲幕布,執行效果如下:

圖片 11

呀,奇怪,動是動起來了,但是變長了,而不是往右移動,

原因是第11列,之前是1,現在12列變為1后,11列還是原來的值1,所以需要重新設定一下,所以在看代碼

圖片 12

這里的思路是:先清除畫布,然后變到下一個坐標,然后在按新坐標畫上去,仔細看代碼注釋,您就能理解了,

好了,我們的第一個塊,終于動起來了,建議設定定時任務的值不要太小,否則你的瀏覽器會卡死,電腦風扇會狂響,,,不要問我為什么知道的,

5. 通過方向控制移動

上面的代碼,我們已經讓方塊動起來了,但是固定往右的,所以,我們需要加一個變數來代表方向,然后通過監聽鍵盤事件,控制變數,而定時任務根據方向變數,來確定下一個出現的塊的位置,請看代碼:

5.1添加方向變數

圖片 13

方向變數的值,是可以任意定義的,我這里是用的鍵盤事件中,上下左右方向鍵所代表的值,方便對應而已,你也可以用1,2,3,4來代表,對應處理的地方,判斷處理即可,

5.2 添加鍵盤監聽方法

圖片 14

這里定義了一個方法,里面添加了jQuery的鍵盤監聽事件,我們僅處理上下左右鍵,所有,判斷等于37、38、39、40的值進行賦值即可,

僅添加方法是不行的,沒有地方觸發呼叫,所以我們在啟動進入方法里面,呼叫addListener

圖片 15

5.3 通過方向變數控制走向

先看下之前的代碼

gameArr[snakeItem[0]][snakeItem[1]] = 0 // 先將snakeItem位置置為0
snakeItem[1] += 1 // 再向右移動,其實就是列坐標加1,
gameArr[snakeItem[0]][snakeItem[1]] = 1 // 最后設定新的位置為1

第一句和第三句,都是固定的,不需要變化,只有第二句,在方向改變的時候,需要調整,所以,看下面的代碼:

圖片 16

通過switch陳述句,判斷方向變數moveDirection的值,然后做出回應,具體請看代碼注釋,

好了,大家可以重繪頁面,然后體驗一下根據方向鍵,小方塊移動了,如果速度比較慢,可以將定時任務的間隔值,調低一些,但是不建議小于100,否則會卡的,

6. 多顆如何移動(第一種方法)

我們先來說第一種移動的思路,每一塊,按順序往前移動,前是哪里,主要看方向變數,

我們先定義連續的三個塊,代表蛇的身體,

圖片 17

然后修改初始化方法,之前我們只畫了一個點,現在我們畫3個點,

圖片 18

最后,我們來處理移動,先看我第一步這樣寫,

圖片 19

先理解這里,我們默認的是往右,所以我們先改39這個分支,
那么向右移動,按之前的思路先清除原先位置,然后所有塊向前走,最后再將新的塊畫上去,先看下效果,向右沒問題,那我們先按這樣的方式,將上下所有都填好,

圖片 20

向左、向右,挺好,但是向上向下,不對了,整體移動,

我們這樣寫是有問題的,其實思路上,不應該世界按方向加,而是只有第一個頭,按方向加,其余的應該往前覆寫,
將snakeItem1的坐標給snakeItem2
將snakeItem2的坐標給snakeItem3
將snakeItem3的坐標清空
然后snakeItem1設定為下一個坐標

看代碼:

圖片 21

仔細理解下代碼,思考,為什么先2賦值給3,再1賦值給2,
而不是我們上面說的,先1賦值給2,再2賦值給3,應該比較好理解的,可以自己調下順序,

這里再說下,不能直接snakeItem3 = snakeItem2,這樣是參考賦值了,最后三個都指向一個變數了,大家也可以調下代碼試試,

好了,現在第一個思路基本將清楚了,解決最后一個問題,這是三個,如何變成多個呢,這里就不能固定寫snakeItem1,snakeItem2,snakeItem3了,要用陣列來表示,看下面的代碼:

首先修改為陣列:

圖片 22

然后,初始化幾個蛇身子坐標

圖片  23

修改移動里面方法的處理,也改為陣列的方式

圖片 24

其實代碼里面的注釋已經很清晰了,請多多理解,注意里面第二塊,迭代,要從倒數第二個開始后移,多多思考思考,

刷洗下頁面,看看效果吧,

圖片 25

也可以自己改改蛇的長度,這個陣列及后續的演算法,就可以支持任意長度了,

第一個演算法介紹完畢,建議多寫幾遍,熟練貫通,

7. 多顆如何移動(第二種方法)

第一種方法,是所有的塊都在往前移動,第二種方式,我們換個思路:
首先有三個塊,位置是1,2,3,現在要變為,2,3,4,看前來是不是第一個思路的,2->1,3->2,4是下一個,4->3,

但是,我們觀察,首先所有的塊都是小黑塊,1,2,3在頁面上除了位置,其他都一樣,那我們換一個思路,將1位置洗掉掉,陣列變成了2,3,再在最前面添加一個4,是不是就行了呢,說起來不是特別清楚,我們直接上代碼吧:(以后重新撰寫的時候,應該會上一些圖來幫助理解)

圖片 26

第一,即以當前蛇的第一塊為主,根據方向,生成下一個塊,
第二,將新生成的下一個塊,添加到蛇陣列的最前面,作為蛇頭,
第三,將蛇陣列的最后一塊去掉,記得清空游戲幕布的值,

好了,第二個方法完成,第二種方法,移動量比較少,只涉及到新增的下一個塊和最后一個塊,這樣蛇不管有多長,計算量都是固定的,而第一種方法,每一個塊都要移動,新多看幾遍,琢磨琢磨,

這里我們的蛇頭都沒有寫,修改下代碼,看看效果:

圖片 27
第一步修改下初始化位置的代碼
圖片 28
其次修改新增的蛇頭的代碼,要注意,新增的蛇頭設定為2,之前老的蛇頭要設定為1喲,要不蛇頭越來越長,你可以試試看看,

8. 隨機出現食物

開始寫食物了,隨機,Math.random()會生成一個0到1之間的一個隨機浮點小數,

圖片 29
先添加一個全域的食物坐標存盤的變數,一個陣列,用于表示食物在幕布上的位置,
圖片 30

然后隨機生成兩個0到39的整數,賦值給foodItem,設定上幕布在該坐標的值為9,下面判斷了,9的值的位置,會顯示綠色,

好了現在加好方法了,在哪里觸發呢?

1,在初始化后,就觸發一次
2,在吃到這個食物的時候觸發

我們先來在初始化的位置,呼叫該方法:

圖片 31

重繪頁面后,已經可以看到了,現在你可以控制方向,將蛇引導過去,但是碰得到卻吃不掉,

9. 吃到食物如何處理

這里,我們僅基于第二種移動演算法來進行處理喲,為什么呢?因為我把第一種演算法的代碼刪掉了,,,所以,第一種演算法的同學,自己寫吧,

還是一樣,先說下思路,如何判斷吃到食物:
第一:就是蛇身新增的下一個塊,如果坐標和食物重合,其實就是吃到了食物,
第二:然后貪吃蛇會怎么樣呀,對了,對變長,其實就是長度+1,換句話說,就是不需要丟掉尾巴,
第三:最后,重新隨機食物,
話不多說,看代碼 :

圖片 32

注釋寫得很清楚拉,重繪后,可以試試玩玩啦,我們貪吃蛇已經初具樣子了,

10. 解決隨機出現食物bug

是什么bug呢,其實就是隨機的時候,有可能隨機到蛇身體上,這樣就不對了,做下判斷處理即可,看代碼:

圖片 33

11. 判斷游戲失敗:出邊界

游戲已經可以玩了,但是跑到邊框,就報錯,這樣不對,我們要判斷游戲結束:出邊界,如何判斷呢,其實就是新生成的蛇頭,坐標超出了邊看范圍,即行坐標大于39,小于0,列坐標大于39,小于0,都是出界了,所以,看代碼:

圖片 34

注意,這段代碼的位置,在新坐標出來后,就直接可以判斷了,

12. 判斷游戲失敗:撞到自己

一樣的道理,新生成的塊,同自己所有的塊進行下比較,看代碼:

圖片 35

13. 處理一些其他bug

第一個bug

現在失敗后,你試試點擊彈出框的確定按鈕,發現會一直彈框,是因為我們的這個定時任務會一直不停的繼續請求,我們需要加一個變數來控制游戲結束,結束后就不要再觸發了,

圖片 36
圖片 37
圖片 38

查看上面三塊代碼,看看注釋,主要注意最后不要缺少一個“}”符號,代碼比較長,就沒有一起截圖了,

好了現在再試試,結束后,就不會一直彈出來了,

第二個bug

現在正在向右移動的貪吃蛇,可以直接向左回傳,而且會直接死掉,,,所以我們要限制一下,向右走的,不能向左走,只能上下,其他方向依次類推,看代碼注釋吧:
圖片 39

好了,到這里為止,我們的整個基礎版的貪吃蛇就開發好了,可以自己玩一玩,畢竟是自己的開發成果呢,小有成就感是吧,

這是一個基礎版的貪吃蛇,大家可以自己完后完善,包括積分、時間、速度快慢、游戲模式:多個食物、穿墻、障礙等等,以后我會更新高級版本的實體教程,敬請期待~~

謝謝大家耐心看完本教程,如果覺得還不錯,請點個贊,幫忙轉發一下,謝謝~~

歡迎各位留言~~原創不易,也請大家多多轉發,將這么好的教程讓更多人看到,后續將推出更多其他詳細案例講解,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/277046.html

標籤:其他

上一篇:HTTP常見的回應狀態碼

下一篇:jquery+html 前端頁面模擬模糊搜索,搜索到的內容高亮展示

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more