HTML+CSS+JS實(shí)現(xiàn)抓娃娃機(jī)游戲
前言
前段時(shí)間去商場吃飯的時(shí)候看到一個(gè)有趣的娃娃機(jī),一個(gè)密封的機(jī)器里底部放著一些被捆綁好的龍蝦,可以買幣去抓龍蝦,抓到以后可以初加工費(fèi)找附近的商家給做成龍蝦大餐,感覺很有意思,把抓抓玩出了一個(gè)新的高度~
主要是抓到以后還可以出手工費(fèi)進(jìn)行烹飪,很吸引人,周邊圍觀的人也很多,觀察了一會(huì)發(fā)現(xiàn)。爪子的抓力不夠,龍蝦在水里還能移動(dòng),而且感覺每一個(gè)個(gè)頭都不小,那小爪感覺根本抓不起來~~
到家后孩子就說爸爸你可不可以做一個(gè)娃娃機(jī)呢?
身為一個(gè)程序員,這點(diǎn)要求我感覺還是難不倒我,然后就突發(fā)奇想,給孩子在手機(jī)上做一個(gè)簡易娃娃機(jī)。起初的想法是哄她開心,看到掘金最近有小游戲的活動(dòng),順便分享給大家~~
效果
如上圖,一個(gè)移動(dòng)的抓手,以及幾個(gè)禮物樣品,還有左右移動(dòng),抓起按鈕,素材很簡單,但是做出來的效果還是有娃娃機(jī)的感覺的~
地址
代碼托管地址在github在線預(yù)覽地址資源路徑不對(duì)無法訪問,如果有需要源碼的同學(xué)可以自行去git倉庫獲取~
布局
布局部分比較簡單,直接貼代碼了。可以根據(jù)自己的需求不同自定義即可~
<div class="page-portrait" id="page-portrait"> <div id="pageContainer" class="page-container game-box"> <div class="poster-main"> <ul class="poster-list"> <li class="item lw1"><img src="images/dx-lw1.png" alt=""></li> <li class="item lw2"><img src="images/dx-lw2.png" alt=""></li> <li class="item lw3"><img src="images/dx-lw3.png" alt=""></li> <li class="item lw4"><img src="images/dx-lw4.png" alt=""></li> <li class="item lw5"><img src="images/dx-lw5.png" alt=""></li> <li class="item lw6"><img src="images/dx-lw6.png" alt=""></li> </ul> </div> <div id="stop" class="button"></div> <div id="left" class="left-btn"></div> <div id="right" class="right-btn"></div> <div class="zhua-top"> <span class="zhua-zuo"></span> <span class="zhua-zhu"></span> <div class="zhua zhuamove"></div> </div> </div> </div>
css用到了幾個(gè)運(yùn)動(dòng)處理了爪子的動(dòng)效,如下方代碼所示
@keyframes run { 0% { background-image: url(../images/dx-zhua3.png); } 25% { background-image: url(../images/dx-zhua2.png); } 50% { background-image: url(../images/dx-zhua1.png); } 75% { background-image: url(../images/dx-zhua2.png); } 100% { background-image: url(../images/dx-zhua3.png); } } @keyframes zhuashou { 0% { top: 360px; background-image: url(../images/dx-zhua1.png); } 100% { top: 360px; background-image: url(../images/dx-zhua2.png); } } @keyframes zhuadown { 0% { top: 138px; background-image: url(../images/dx-zhua1.png); } 100% { top: 360px; background-image: url(../images/dx-zhua1.png); } } @keyframes zhua-slideUp { 0% { top: 360px; background-image: url(../images/dx-zhua2.png); } 100% { top: 138px; background-image: url(../images/dx-zhua2.png); } } @keyframes img-slideUp { 0% { top: 23px; } 100% { top: -200px; } }
js代碼創(chuàng)建了一個(gè)控制器類,處理事件以及動(dòng)畫效果的交替等。
var Carousel = { data: { result: 1 }, init: function () { Carousel.control(); }, stop: function () { $(".zhua").removeClass("zhuamove").addClass("zhuadown"); $(".zhua-zhu").addClass("zhudown"); var timer01 = setTimeout(function () { $(".zhua").removeClass("zhuadown").addClass("zhuashou"); var timer03 = setTimeout(function () { $(".zhua").removeClass("zhuashou").addClass("zhuaup"); $(".zhua-zhu").removeClass("zhudown").addClass("zhuup"); $(".poster-list .lw" + (Carousel.data.result + 1)).addClass("img-slideUp"); clearTimeout(timer03); timer03 = null; }, 800); var timer02 = setTimeout(function () { $(".zhua").removeClass("zhuaup").removeClass("zhuaup1"); $(".zhua-zhu").removeClass("zhuup"); clearTimeout(timer02); timer02 = null; alert("恭喜您抽中一等獎(jiǎng)~"); Carousel.start(); }, 2500); clearTimeout(timer01); timer01 = null; }, 1000); }, start: function () { $(".zhua").addClass("zhuamove"); $(".zhua").removeClass("zhuadown").removeClass("zhuaup1").removeClass("zhuaup"); $(".poster-list .item").removeClass("img-slideUp").removeClass("img-slideOutUp"); }, zhuaMove: function (num) { switch (num) { case 0: $(".zhua-top").animate({ left: -145, },300); break; case 1: $(".zhua-top").animate({ left: 0, },300); break; case 2: $(".zhua-top").animate({ left: 145, },300); break; } }, control: function () { $("#left").on("click", function () { Carousel.data.result--; if (Carousel.data.result <= 0) { Carousel.data.result = 0; } Carousel.zhuaMove(Carousel.data.result); }); $("#stop").click(Carousel.stop); $("#right").on("click", function () { Carousel.data.result++; if (Carousel.data.result >= 2) { Carousel.data.result = 2; } Carousel.zhuaMove(Carousel.data.result); }); }, };
總結(jié)
css現(xiàn)在有很多的新的特性可以解決我們工作中遇到的動(dòng)效以及兼容問題,有心的同學(xué)可以多多查閱文檔,寫一寫自己感興趣的小demo,或者給孩子做一個(gè)小游戲來玩,何嘗不是一件有成就的事呢~
到此這篇關(guān)于HTML+CSS+JS實(shí)現(xiàn)抓娃娃機(jī)游戲的文章就介紹到這了,更多相關(guān)JS抓娃娃機(jī)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序開發(fā)之從相冊獲取圖片 使用相機(jī)拍照 本地圖片上傳
本篇文章主要介紹了微信小程序開發(fā)之從相冊獲取圖片--使用相機(jī)拍照,本地圖片上傳的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04JS小功能(setInterval實(shí)現(xiàn)圖片效果顯示時(shí)間)實(shí)例代碼
這篇文章主要介紹了setInterval實(shí)現(xiàn)圖片效果顯示時(shí)間實(shí)例代碼,有需要的朋友可以參考一下2013-11-11JS如何實(shí)現(xiàn)動(dòng)態(tài)添加的元素綁定事件
這篇文章主要介紹了JS如何實(shí)現(xiàn)動(dòng)態(tài)添加的元素綁定事件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11JS實(shí)現(xiàn)的自定義顯示加載等待圖片插件(loading.gif)
這篇文章主要介紹了JS實(shí)現(xiàn)的自定義顯示加載等待圖片插件,涉及javascript針對(duì)圖片的動(dòng)態(tài)加載實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06利用JS如何計(jì)算字符串所占字節(jié)數(shù)示例代碼
因?yàn)樽罱?xiàng)目有個(gè)需求要用js計(jì)算一串字符串寫入到localStorage里所占的內(nèi)存,所以便有了這篇文章,下面這篇文章主要給大家介紹了關(guān)于利用JS如何計(jì)算字符串所占字節(jié)數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-09-09JS動(dòng)畫實(shí)現(xiàn)回調(diào)地獄promise的實(shí)例代碼詳解
這篇文章主要介紹了JS動(dòng)畫實(shí)現(xiàn)回調(diào)地獄promise的實(shí)例代碼詳解,需要的朋友可以參考下2018-11-11微信小程序如何根據(jù)不同用戶切換不同TabBar(簡單易懂!)
小程序中我們可能需要根據(jù)不同的權(quán)限展示不同的tabbar,下面這篇文章主要給大家介紹了關(guān)于微信小程序如何根據(jù)不同用戶切換不同TabBar的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04