国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換

這篇具有很好參考價值的文章主要介紹了[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

系列文章目錄

第一章 2D二維地圖繪制、人物移動、障礙檢測
第二章 跟隨人物二維動態(tài)地圖繪制、自動尋徑、小地圖顯示(人物紅點顯示)
第三章 繪制冰宮寶藏地圖、人物鼠標點擊移動、障礙檢測
第四章 繪制Q版地圖、鍵盤上下左右地圖場景切換



前言

本章內(nèi)容在第一章的基礎上進行了升級,因此帶大家回顧下第一章的內(nèi)容。

第一章:

  • 使用JavaScript繪制簡單的二維地圖
    采用二維數(shù)組存儲地圖信息,使用表格繪制地圖,每個td單元格存儲數(shù)據(jù)
  • 鍵盤上下左右控制
    使用JavaScript keyPress鍵盤事件監(jiān)聽WASD鍵,按鍵觸發(fā)時人物做出相應操作
  • 障礙物碰撞檢測(采用格子碰撞檢測)
    人物下一步碰撞到石頭時,提示遇到障礙,終止人物運動

本章節(jié)采用第一章節(jié)的鍵盤上下左右事件控制,同時把地圖層與數(shù)據(jù)層(二維網(wǎng)格、人物)分離,作為單獨的模塊。


一、本章節(jié)效果圖

[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖

二、任務拆解

1、準備【地圖層圖片】,找一張酷炫的地圖
2、準備【游戲窗口層】,設置為瀏覽器可視區(qū)域高、寬
3、準備【游戲地圖層】,設置為地圖圖片自身高、寬
4、實現(xiàn)【鍵盤上下左右操作】,讓【游戲地圖層】在【游戲窗口層】可視區(qū)域內(nèi)上下作用移動,并實現(xiàn)邊界功能
5、看看最終效果
[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖

2.1、準備【地圖層圖片】

找到一張足夠大的Q版地圖(PS:傳奇、問道的大地圖寬度可達2萬+px)
[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖

2.2、準備【游戲窗口層】

設置游戲窗口層為瀏覽器可視區(qū)域高、寬,其余內(nèi)容將不可見
1、指定div的ID=parentDiv(id=“parentDiv”);
2、指定塊高、塊寬為瀏覽器窗口的95%(width: 95%; height: 95%; );
3、指定parentDiv,相對于body元件定位,初始狀態(tài)下margin-left、margin-top都為0(默認值) ( position: absolute; );
4、設置背景色為紅色(便于調(diào)試時避免圖層超出游戲窗口層)(background-color: red; );
5、設置游戲窗口層溢出被剪切,其余內(nèi)容將不可見(展示固定窗口的地圖,其余內(nèi)容不可見)(overflow: hidden; )

<body>

	<div style="width: 95%; height: 95%; position: absolute; 
		background-color: red; overflow: hidden; " id="parentDiv">
	</div>

</body>

涉及知識點:CSS position屬性、CSS overflow屬性、CSS background-color屬性
[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖

2.2.1、CSS position屬性

position屬性指定用于元素的定位方法的類型(static, relative, absolute, fixed, sticky)

  • CSS語法
    position: static|absolute|fixed|relative|sticky|initial|inherit;
  • 屬性值
    性值 描述
    tatic 默認值。 按它們出現(xiàn)在文檔流中元素順序呈現(xiàn)
    bsolute 元件相對于其第一定位(非靜態(tài))祖先元件定位
    ixed 元素相對于瀏覽器窗口定位
    elative 元素相對于其正常位置定位,因此“l(fā)eft:20px”將20個像素添加到元素的左邊位置
    ticky 元素根據(jù)用戶的滾動位置定位,粘性元素在相對和固定之間切換,具體取決于滾動位置。 它被相對定位,直到在視口中滿足給定的偏移位置 - 然后它“粘住”到位(如position:fixed)
    nherit 從其父元素繼承此屬性

2.2.2、CSS overflow屬性

overflow屬性指定內(nèi)容溢出元素框時應發(fā)生的情況。此屬性指定當元素的內(nèi)容太大而無法放入指定區(qū)域時是剪輯內(nèi)容還是添加滾動條。
注意:overflow屬性僅適用于具有指定高度的塊元素。

  • CSS語法
    overflow: visible|hidden|scroll|auto|initial|inherit;
  • 屬性值
    性值 描述
    isible 溢出沒有被剪裁。 它呈現(xiàn)在元素框之外。 這是默認的
    idden 溢出被剪切,其余內(nèi)容將不可見
    croll 剪輯溢出,但添加滾動條以查看其余內(nèi)容
    uto 如果剪切了溢出,則應添加滾動條以查看其余內(nèi)容
    nherit 從其父元素繼承此屬性

2.2.3、CSS background-color屬性

background-color屬性設置元素的背景顏色。元素的背景是元素的總大小,包括填充和邊框(但不是邊距)。
提示:使用背景顏色和文本顏色使文本易于閱讀,此處便于調(diào)試時便于調(diào)整畫布的邊界

  • CSS語法
    background-color: color|transparent|inherit;
  • 屬性值
    性值 描述
    olor 指定背景顏色。 查看CSS顏色值以獲取可能顏色值的完整列表。
    ransparent 指定背景顏色應該是透明的。 這是默認的
    nherit 從其父元素繼承此屬性。

2.3、準備【游戲地圖層】

1、在id="parentDiv"的div容器里,放置【游戲地圖層】;
2、設置【游戲地圖層】的id=“mapDiv”;
3、設置【游戲地圖層】的高度、寬度,1比1比例還原原圖尺寸;
4、設置【游戲地圖層】的z-index,使得能顯示出來的地圖,放置在parentDiv容器之上;

<div style="width: 95%; height: 95%; position: absolute;
	background-color: red; overflow: hidden; " id="parentDiv">
    <div style="z-index: 1; height: 2480px; width: 3280px" id="mapDiv">
    
    </div>
</div>

[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖
**涉及知識點:CSS z-index屬性

2.3.1、CSS z-index屬性

z-index屬性指定元素的堆棧順序。堆棧順序較大的元素始終位于堆棧順序較低的元素前面。
注意: z-index僅適用于定位元素(position:absolute, position:relative, 或 position:fixed)

  • CSS語法
    z-index: auto|number|inherit;
  • 屬性值
    性值 描述
    uto 將堆棧順序設置為等于其父項。 這是默認的
    umber 設置元素的堆棧順序。 允許使用負數(shù)
    nherit 從其父元素繼承此屬性。

2.4、實現(xiàn)【鍵盤上下左右操作】

讓【游戲地圖層】在【游戲窗口層】可視區(qū)域內(nèi)上下作用移動,并實現(xiàn)邊界功能
[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換,前端小游戲,javascript,html小游戲,Q版地圖

<script>
		//文檔準備好之后開始執(zhí)行
        window.onload = function () {
            init();
        }

        var mapDivEle;
        var parentDivEle;
        var stepDistance = 20;
        
		/**
         * 定義游戲窗口層、游戲地圖層,并渲染頁面
         */
        function init() {

            // 定義游戲窗口層
            parentDivEle = document.getElementById("parentDiv");
            // 定義游戲地圖層
            mapDivEle = document.getElementById('mapDiv');

			//渲染地圖
            loadData();
        }

        /**
         *  渲染地圖
         * @param mapData
         */
        function loadData() {
            // 加載地圖
            mapDivEle.style.background= 'url("../img/item/bg/os.jpg")';
        }
        
		/**
         * 定義 鍵盤上下左右事件
         * 并判斷邊界
         * @param e
         */
        var keydown = function (e) {
            if (e.keyCode == 37) {
                console.log("向左")
                if( Number(mapDivEle.style.marginLeft.replaceAll("px", "")) < 0 ) {
                    mapDivEle.style.marginLeft = Number(mapDivEle.style.marginLeft.replaceAll("px", "")) + stepDistance + "px";
                } else {
                    console.log("超出邊界")
                }
            } else if (e.keyCode == 38) {
                console.log("向上")
                if( Number(mapDivEle.style.marginTop.replaceAll("px", "")) < 0 ) {
                    mapDivEle.style.marginTop = Number(mapDivEle.style.marginTop.replaceAll("px", "")) + stepDistance + "px";
                } else {
                    console.log("超出邊界")
                }
            } else if (e.keyCode == 39) {
                console.log("向右")
                if ( (parentDivEle.clientWidth) - mapDivEle.clientWidth + stepDistance <= Number(mapDivEle.style.marginLeft.replaceAll("px", ""))) {
                    mapDivEle.style.marginLeft = Number(mapDivEle.style.marginLeft.replaceAll("px", "")) - stepDistance + "px";
                } else {
                    console.log("超出邊界")
                }
            } else if (e.keyCode == 40) {
                console.log("向下")
                if( (parentDivEle.clientHeight) - mapDivEle.clientHeight + stepDistance <= Number(mapDivEle.style.marginTop.replaceAll("px", "")) ) {
                    mapDivEle.style.marginTop = Number(mapDivEle.style.marginTop.replaceAll("px", "")) - stepDistance + "px";
                } else {
                    console.log("超出邊界")
                }
            }
        }
</script>

<body onkeydown="keydown(event)">
	......
</body>

總結(jié)

以上就是今天要講的內(nèi)容,本文僅僅簡單介紹地圖的移動,后續(xù)以此為基本,實現(xiàn)地圖跟隨英雄人物動態(tài)移動功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-650629.html

到了這里,關(guān)于[JavaScript游戲開發(fā)] 繪制Q版地圖、鍵盤上下左右地圖場景切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 鍵盤按鍵事件 通過鍵盤上下左右按鍵移動界面上圖標

    鍵盤按鍵事件 通過鍵盤上下左右按鍵移動界面上圖標

    #main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); } #include “keyevent.h”//頭文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include class KeyEvent : public QWidget { Q_OBJECT public: KeyEvent(QWidget *parent = 0); ~KeyEvent(); void drawPix(); void keyPre

    2024年02月09日
    瀏覽(21)
  • vxe表格實現(xiàn)鍵盤上下左右方向鍵移動聚焦

    vxe表格實現(xiàn)鍵盤上下左右方向鍵移動聚焦

    vxe 表格分為 vxe-table 一般表格和 vxe-grid 高級表格,兩者之間的區(qū)別我就不說啦,我們來實現(xiàn)這兩種表格用鍵盤按動上下左右方向鍵達到移動聚焦的效果。話不多說,上正文?。?! 首先在標簽放入這兩個事件: 主要是利用vxe表格內(nèi)置的@cell-click事件,來監(jiān)聽點擊單元格的行號

    2024年02月07日
    瀏覽(21)
  • elementui表格插槽使用的input輸入框,添加鍵盤快捷鍵上下左右箭頭,獲取焦點

    給表格行、列賦值index;獲取表格的總列數(shù) 在el-table 添加 :cell-class-name=\\\"tableRowClassName\\\" 當某個單元格被點擊時 獲取行列 觸發(fā)及鍵盤事件 @cell-click=\\\"handleCellClick\\\" 給input賦值id

    2024年02月02日
    瀏覽(30)
  • 參考 | 解決iPad向日葵遠程Windows電腦無法使用藍牙鍵盤上下左右tab鍵的問題

    參考 | 解決iPad向日葵遠程Windows電腦無法使用藍牙鍵盤上下左右tab鍵的問題

    本人一級懶狗,一向不喜歡背電腦出門,帶個iPad和藍牙鍵盤出門寫代碼才是最愛,所以我一直是向日葵的死忠粉。在以前一直沒有什么問題,我大概記得2021年11月左右,向日葵新推一款藍牙鼠標,可以適配向日葵的時候,真的欣喜若狂,因為在IOS上鼠標一直是個讓人頭疼的問

    2024年02月04日
    瀏覽(28)
  • Unity3D攝像機,鍵盤控制前后左右上下移動,鼠標控制旋轉(zhuǎn)、放縮

    Unity3D中運行場景時,實現(xiàn)攝像機的前、后、左、右、上、下,以及鼠標滾輪的放縮,鼠標右鍵的旋轉(zhuǎn)操作。親測有效,可供參考。 按鍵功能介紹:W——前;S——后;A——左;D——右;Q——下降;E——上升;鼠標右鍵——旋轉(zhuǎn);鼠標滾輪——放縮。 Tourcamera腳本需要掛在攝

    2024年02月11日
    瀏覽(26)
  • 【ipad+向日葵遠程控制】解決ipad上在向日葵中無法使用上下左右鍵、Tab鍵(解決方法是:在ipad上安裝舊版本向日葵11.2.2,配合使用的是羅技K380鍵盤)

    【ipad+向日葵遠程控制】解決ipad上在向日葵中無法使用上下左右鍵、Tab鍵(解決方法是:在ipad上安裝舊版本向日葵11.2.2,配合使用的是羅技K380鍵盤)

    如何下載老版本的ipad軟件? - 我真的愛發(fā)明的回答 - 知乎 參考 | 解決iPad向日葵遠程Windows電腦無法使用藍牙鍵盤上下左右tab鍵的問題 解決ipad上在向日葵中無法使用上下左右鍵、Tab鍵 解決方法是:在ipad上下載舊版本 向日葵11.2.2 因此,下文的操作目的是:借助3個工具,實現(xiàn)在

    2024年02月10日
    瀏覽(34)
  • [JavaScript游戲開發(fā)] Q版地圖上讓英雄、地圖都動起來

    [JavaScript游戲開發(fā)] Q版地圖上讓英雄、地圖都動起來

    第一章 2D二維地圖繪制、人物移動、障礙檢測 第二章 跟隨人物二維動態(tài)地圖繪制、自動尋徑、小地圖顯示(人物紅點顯示) 第三章 繪制冰宮寶藏地圖、人物鼠標點擊移動、障礙檢測 第四章 繪制Q版地圖、鍵盤上下左右地圖場景切換 第五章 Q版地圖上讓英雄、地圖都動起來 本章

    2024年02月14日
    瀏覽(23)
  • Unity:鼠標【上下左右滑動時】控制相機【左右張望】和【上下抬頭】

    Unity:鼠標【上下左右滑動時】控制相機【左右張望】和【上下抬頭】

    相機旋轉(zhuǎn),看著是小事,但是卻關(guān)系到用戶的直觀體驗。旋轉(zhuǎn)對了母慈子孝,旋轉(zhuǎn)錯了則翻江倒海。 鼠標左右移動時,控制相機左右轉(zhuǎn)動 鼠標上下移動時,控制相機抬頭低頭 你可以在GPT里提問,他的回答也很給力,能轉(zhuǎn),但是都不符合人體的看東西的特點。 后來還是的自己

    2024年02月10日
    瀏覽(26)
  • 用css來實現(xiàn)上下左右箭頭

    用css來實現(xiàn)上下左右箭頭

    ? ?

    2024年02月12日
    瀏覽(26)
  • Flutter:自定義組件的上下左右彈出層

    Flutter:自定義組件的上下左右彈出層

    最近要使用Flutter實現(xiàn)一個下拉菜單,需求就是,在當前組件下點擊,其下方彈出一個菜單選項,如下圖所示: 實現(xiàn)起來,貌似沒什么障礙,在Flutter中本身就提供了彈出層PopupMenuButton組件和showMenu方法,于是開搞,代碼如下: 直接使用showMenu也行,代碼如下: PopupMenuButton運行

    2024年02月10日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包