地图编辑器

 

 <!-- 地图容器 -->
    <div class="mapContainer">
    </div>
    <button id="btn" style="text-align: center;">save</button>
<script>
  
</script>

 

let container = document.querySelector('.mapContainer')
let btn  = document.getElementById('btn')
//利用一维数组来映射地图,约定0没有路障,1有路障
let mapArr = localStorage['mapArr'] ? JSON.parse(localStorage['mapArr']) : new Array(100 * 100).fill(0);
//根据数组渲染页面,i表示纵向,j表示横向
function render(){
    for(let i = 0 ; i < 100;i++){
        for(let j = 0 ; j < 100;j++){
             let cellClass = 
              mapArr[i * 100 + j] == 0 ? "cell" :'cell block'
            let cell = document.createElement('div');
            cell.className = cellClass;
            cell.addEventListener('mousemove',function(){
                if(mousedown){
                    if(clear){
                        //右键
                        cell.className = 'cell';
                        mapArr[i * 100 + j] = 0
                    }else{
                        cell.className = 'cell block'
                        mapArr[i * 100 + j] = 1
                    }
                }
            })
            container.appendChild(cell)  
        }
    }
}
render()

//设置标识
let mousedown = false;
let clear = false
document.addEventListener('mousedown',()=>mousedown = true)

//阻止鼠标右键默认事件
document.addEventListener('contextmenu',e=>e.preventDefault())
document.addEventListener('mousemove',(e)=>{
    //e.which 左1  右3
    clear = e.which === 3
})

document.addEventListener('mouseup',()=>mousedown = false)
btn.addEventListener('click',()=>localStorage['mapArr'] = JSON.stringify(mapArr))

  

posted on 2020-12-29 11:44  yinjiali  阅读(83)  评论(0编辑  收藏  举报