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

Html5版音樂游戲制作及分享(H5音樂游戲)

這篇具有很好參考價值的文章主要介紹了Html5版音樂游戲制作及分享(H5音樂游戲)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這里實現(xiàn)了Html5版的音樂游戲的核心玩法。

游戲的制作借鑒了,很多經(jīng)典的音樂游戲玩法,通過簡單的代碼將音樂的節(jié)奏與操作相結(jié)合。

Html5版音樂游戲制作及分享(H5音樂游戲)

可以通過手機(jī)進(jìn)行游戲,準(zhǔn)確點擊下落時的目標(biāo),進(jìn)行得分。

點擊試玩

游戲內(nèi)的下落數(shù)據(jù)是通過手打記錄的,可能有些偏差哈。

實現(xiàn)功能

1、Html中加入了聲音控制功能

2、根據(jù)音樂節(jié)奏,準(zhǔn)確提示敲擊提示

3、判斷點擊時機(jī)節(jié)奏的準(zhǔn)確性

4、手打進(jìn)行音頻樂譜數(shù)據(jù)的記錄,可以實現(xiàn)多個關(guān)卡的制作

游戲內(nèi)的下落數(shù)據(jù)是通過手打記錄的,可能有些偏差哈。)? ? ? ? ?

Html5版音樂游戲制作及分享(H5音樂游戲)?

源碼地址:pro.youyu001.com

制作思路

1、游戲分為四條下落的區(qū)間,通過幀頻動畫實現(xiàn)效果。

2、點擊時,進(jìn)行下落的圖片位置的判斷,計算得分,并加以提示。

3、游戲中的每條下落的道是按照對象方式定義,可以添加或減少,進(jìn)行難度控制(這個還沒實現(xiàn)哈)。

4、游戲采用了手機(jī)觸屏方式進(jìn)行游玩。

5、游戲中的樂譜踩點,是跟著游戲先完一遍手敲的,記錄游戲運行的幀頻數(shù)據(jù),進(jìn)行游戲節(jié)奏的控制。

更多擴(kuò)展的思路

可以通過這個思路,可以擴(kuò)展出(太鼓達(dá)人、旋律天國)等等音樂游戲作品的制作。

如果還有更好的思路或?qū)τ螒蜷_發(fā)感興趣

可以在評論區(qū)出留言,一起探討

代碼說明

這里給出一些關(guān)鍵代碼的說明

1、音頻掉落數(shù)據(jù)數(shù)組,根據(jù)幀頻計算掉落的數(shù)據(jù)

var musicArray = [{"fps":180,"button":2},{"fps":221,"button":3},{"fps":332,"button":2},{"fps":373,"button":4},
					 {"fps":423,"button":3},{"fps":442,"button":3},{"fps":479,"button":2},{"fps":518,"button":3},
					 {"fps":626,"button":4},{"fps":652,"button":3},{"fps":671,"button":2},{"fps":707,"button":3},
					 {"fps":728,"button":4}];

2、每條音頻通道的對象,包括顯示、掉落物品控制得分判斷等

function Button(){	
		//背景
		this.bjt = new PIXI.Sprite.fromImage("res/lianxi/music/bjt"+imgNumber+".png");
		gameObjectCeng.addChild(this.bjt);
		this.bjt.anchor.set(0.5,1);
		this.bjt.x = buttonX;
		this.bjt.y = 800;
		this.bjt.visible = false;
		//按鈕
		this.button =new PIXI.Sprite.fromImage("res/lianxi/music/anniu"+imgNumber+".png");
		uiCeng.addChild(this.button);
		this.button.anchor.set(0.5,0.5);
		this.button.y = 754;
		this.button.x = this.bjt.x;
		this.type = imgNumber;
		//線
		this.line = new PIXI.Sprite.fromImage("res/lianxi/music/xian.png");
		lineCeng.addChild(this.line);
		this.line.anchor.set(0.5,0);
		this.line.x = this.bjt.x;
		//點擊位置中心點
		this.kong = new PIXI.Sprite.fromImage("res/lianxi/music/kong.png");
		lineCeng.addChild(this.kong);
		this.kong.anchor.set(0.5,0.5);
		this.kong.x = this.bjt.x;
		this.kong.y =600;
		
		this.button.interactive = true;	
		this.animalArray = [];
		this.createAnimal = function(){
		//調(diào)用創(chuàng)建動物對象
			var animal =new Animal(this.type,this.button.x);
			animalCeng.addChild(animal.animal);
			this.animalArray.push(animal);
			
		};
		//動物對象進(jìn)行移動
		this.animalMove = function(){
	
			for(var i = 0; i < this.animalArray.length; i++){
				var animal = this.animalArray[i];
				animal.move();
			}
		};
		//刪除動物
		this.show = true;
		this.deleteAnimal = function(){
			for(var i = this.animalArray.length-1; i >=0; i--){
				var animal = this.animalArray[i];
				if(this.kong.y + 46 < animal.animal.y && this.show == true){
					this.scoreAction("miss");
					this.show = false;
				}
				if(animal.animal.y>800){
				this.show = true;
					animalCeng.removeChild(animal.animal);
					this.animalArray.splice(i,1);
				}
				
			}
		};
		var soft = this;
		var num = 1;
		//鼠標(biāo)按下
		this.button.on("mousedown",function(){
		  soft.buttonClick();
		});
		//鼠標(biāo)抬起
		this.button.on("mouseup",function(){
			soft.bjt.visible = false;
		});
		
		this.button.on("click",function(){
			//var str = {"zp":zp,"button":soft.type};
			//musicArray.push(str);
			//console.log(JSON.stringify(musicArray));
			
		});
		//移動端點擊
		this.button.on("touchstart",function(){
			soft.buttonClick();
		});
		//移動端抬起
		this.button.on("touchend",function(){
			soft.bjt.visible = false;
		});
		//點擊事件
		this.buttonClick = function(){
			soft.bjt.visible = true;
			
			for(var i = 0;i < soft.animalArray.length;i++){
				if(soft.kong.y - 10 < soft.animalArray[i].animal.y  && soft.kong.y + 10 > soft.animalArray[i].animal.y){
					score += 10;
				    scoreTxt.text = score;
					animalCeng.removeChild(soft.animalArray[i].animal);
					soft.animalArray.splice(i,1);
					this.scoreAction("perfect");
					
				}else if(soft.kong.y - 20 < soft.animalArray[i].animal.y  && soft.kong.y + 20 > soft.animalArray[i].animal.y){
					score += 5;
				    scoreTxt.text = score;
					animalCeng.removeChild(soft.animalArray[i].animal);
					soft.animalArray.splice(i,1);
					this.scoreAction("good");
				}else if(soft.kong.y - 30 < soft.animalArray[i].animal.y  && soft.kong.y + 30 > soft.animalArray[i].animal.y){
					score += 1;
				    scoreTxt.text = score;
					animalCeng.removeChild(soft.animalArray[i].animal);
					soft.animalArray.splice(i,1);
					this.scoreAction("bad");
				}
				//soft.bjt.visible = false;
			}
		};
		//鍵盤點擊事件
		this.keyDown = function() {
			soft.bjt.visible = true;
			for(var i = 0;i<soft.animalArray.length;i++){
				if(soft.kong.y - 30 < soft.animalArray[i].animal.y  && soft.kong.y + 30 > soft.animalArray[i].animal.y){
					score ++;
				    scoreTxt.text = score;
					animalCeng.removeChild(soft.animalArray[i].animal);
					soft.animalArray.splice(i,1);
				}
				//soft.bjt.visible = false;
			}
			// var str = {"zp":zp,"button":soft.type};
			// musicArray.push(str);
			// console.log(JSON.stringify(musicArray));
		};

		this.keyUp = function() {
			soft.bjt.visible = false;
		};
		//記錄點擊之后結(jié)果
		this.scoreArray = [];
		this.scoreAction = function(name){
			var score = new PIXI.Sprite.fromImage("res/lianxi/music/"+name+".png");
			gameObjectCeng.addChild(score);
			score.y = 540;
			score.x = this.bjt.x;
			score.anchor.set(0.5,0.5);
			score.alpha = 1;
			this.scoreArray.push(score);
		};
		//成績效果圖片移動
		this.scoreMove = function(){
			for(var i = 0; i < this.scoreArray.length; i++){
				var score = this.scoreArray[i];
				score.alpha -= 0.01;
				score.y -= 2;
			}
			for(var i = this.scoreArray.length - 1; i >= 0; i--){
				var score =this.scoreArray[i];
				if(score.y <= 400){
					gameObjectCeng.removeChild(score);
					this.scoreArray.splice(i,1);
				}
			}
		};
	}

3、下落圖片的對象,控制下落的速度及顯示樣式。

	function Animal(type,animalX){
		var number=Math.floor(Math.random()*5+1);
		if(type == 1){
			this.animal = new PIXI.Sprite.fromImage("res/lianxi/music/blue/lan" + number + ".png");
		}
		if(type == 2){
			this.animal = new PIXI.Sprite.fromImage("res/lianxi/music/green/lv" + number + ".png");
		}
		if(type == 3){
			this.animal = new PIXI.Sprite.fromImage("res/lianxi/music/red/hong" + number + ".png");
		}
		if(type == 4){
			this.animal = new PIXI.Sprite.fromImage("res/lianxi/music/yellow/huang" + number + ".png");
		}
		this.animal.anchor.set(0.5,0.5);
		this.animal.x = animalX;
		this.animal.y = 0;
		//動物對象移動
		this.move = function(){
			this.animal.y += 3.33;
		}
		
	}

4、音頻的控制,這里封裝了Html網(wǎng)頁通過Js對音頻文件的播放控制。文章來源地址http://www.zghlxwxcb.cn/news/detail-416270.html

	function SoundManager() {
		var audioObj = {};
		var cacheNum = 3;//預(yù)留聲音最小個數(shù)

		//添加聲音
		this.addAudio = function(name, url) {
			var audio = new Audio();
			//audio.autoplay = true;
			audio.src = url;
			audio.load();
			//audio.pause();
			audio.preload="auto";
			document.body.appendChild(audio);

			var audioArr = audioObj[name];
			if(audioArr == null) {
				audioArr = [];
			}
			audioArr.push(audio);
			audioObj[name] = audioArr;
			if(audioArr.length < cacheNum) {
				//自動添加該音色
				this.addAudio(name, audio.src);
			}
		}
		
		//播放聲音
		this.play = function(name, loop = false) {
			var audioArr = audioObj[name];
			var audio = null;
			if(audioArr.length > 0) {
				audio = audioArr[0];
				audioArr.splice(0, 1);
				if(loop == true) {
					audio.loop = true;
				}
				audio.play();
				audio.onended = function() {
					//console.log(audio + "音頻播放完成" + audio.src);
					audioArr.push(audio);
				};
				if(audioArr.length < cacheNum) {
					//console.log("緩存數(shù)量不夠了!");
					//自動添加該音色
					this.addAudio(name, audio.src);
				}
			} else {
				//console.log("沒有該聲音的緩存");
			}
			return audio;
		}
	
	}
	var soundManager = null;
	SoundManager.getInstance = function() {
		if(soundManager == null) {
			soundManager = new SoundManager();
		}
		return soundManager;
	}
	
	SoundManager.getInstance().addAudio("bgm", "res/lianxi/music/tkzc.mp3");

到了這里,關(guān)于Html5版音樂游戲制作及分享(H5音樂游戲)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • HTML5+CSS實現(xiàn)圖片3D旋轉(zhuǎn)效果,附音樂

    HTML5+CSS實現(xiàn)圖片3D旋轉(zhuǎn)效果,附音樂

    利用程序呈現(xiàn)圖片,可以俘獲一眾女生的心,增加音樂可以實現(xiàn)圖片變化的同時也帶上了想要得到效果,如此一程序?qū)嵞吮娙酥病?先看看程序呈現(xiàn)的效果,還是特別吸引人的。 先在網(wǎng)上爬取想要呈現(xiàn)的美女照片,存放在文件夾img-one,與程序路徑一致。 圖片像素需進(jìn)行調(diào)整

    2024年02月13日
    瀏覽(24)
  • H5項目實現(xiàn)掃描二維碼功能 -- html5-qrcode

    H5項目實現(xiàn)掃描二維碼功能 -- html5-qrcode

    vue3中使用 html5-qrcode 實現(xiàn)掃描二維碼功能。 實現(xiàn)原理:調(diào)取手機(jī)攝像頭掃一掃功能實現(xiàn) 注:調(diào)取手機(jī)攝像頭需要再 https協(xié)議 下才可以,有的項目啟動配置 https:true 可以實現(xiàn)啟動的項目協(xié)議為 https 且可以訪問,有的還是需要證書才能訪問 1、下載 html5-qrcode 2、使用

    2024年02月06日
    瀏覽(23)
  • HTML5 實現(xiàn)撲克翻牌游戲

    HTML5 實現(xiàn)撲克翻牌游戲

    ?撲克翻牌游戲就是桌面24張牌,玩家翻到兩張相同撲克牌則消去,如果時間2分鐘到了,仍然沒有成功則游戲失敗。撲克翻牌游戲運行結(jié)果如圖1。 ? Html5倒計時功能可以使用setTimeout()函數(shù)或者setInterval()函數(shù)來實現(xiàn)。 1.使用setTimeout實現(xiàn)倒計時功能 setTimeout()會在一個指定的延

    2024年02月13日
    瀏覽(21)
  • 打造經(jīng)典游戲:HTML5與CSS3實現(xiàn)俄羅斯方塊

    打造經(jīng)典游戲:HTML5與CSS3實現(xiàn)俄羅斯方塊

    ?? 前言 歡迎來到我的技術(shù)小宇宙!?? 這里不僅是我記錄技術(shù)點滴的后花園,也是我分享學(xué)習(xí)心得和項目經(jīng)驗的樂園。?? 無論你是技術(shù)小白還是資深大牛,這里總有一些內(nèi)容能觸動你的好奇心。?? ?? 洛可可白 :個人主頁 ?? 個人專欄 :?前端技術(shù) ?后端技術(shù) ?? 個人

    2024年03月11日
    瀏覽(30)
  • 用html5寫一個音樂播放器

    在HTML5中創(chuàng)建一個簡單的音樂播放器時,你可以使用`audio`元素來實現(xiàn)。以下是一個基本的示例: 在上面的示例中, audio 元素用于嵌入音頻文件, controls 屬性會顯示播放器的控件,例如播放、暫停和音量控制。 source 元素用于指定音頻文件的來源和類型。 你需要將 \\\"your_music

    2024年02月10日
    瀏覽(29)
  • HTML5(H5)的前生今世

    HTML5(H5)的前生今世

    HTML5是一種用于構(gòu)建和呈現(xiàn)網(wǎng)頁的最新標(biāo)準(zhǔn)。它是HTML(超文本標(biāo)記語言)的第五個版本,于2014年由萬維網(wǎng)聯(lián)盟(W3C)正式推出。HTML5的前身可以追溯到互聯(lián)網(wǎng)爆發(fā)的早期,當(dāng)時網(wǎng)頁設(shè)計師們面臨著許多限制和挑戰(zhàn)。 在互聯(lián)網(wǎng)的早期階段,網(wǎng)頁的設(shè)計和構(gòu)建主要依賴于HTML和C

    2024年02月14日
    瀏覽(15)
  • h5(html5)+css3前端筆記二

    h5(html5)+css3前端筆記二

    一、表格標(biāo)簽 表格的主要作用: 表格主要用于 顯示、展示數(shù)據(jù) ,因為它可以讓數(shù)據(jù)顯示的非常的規(guī)整,可讀性非常好。特別是后臺展示數(shù)據(jù)的時候,能夠熟練運用表格就顯得很重要。一個清爽簡約的表格能夠把繁雜的數(shù)據(jù)表現(xiàn)得很有條理。 1. table/table 用來定義表格的標(biāo)簽

    2024年02月14日
    瀏覽(32)
  • 【HTML5】登錄頁面制作簡易版

    【HTML5】登錄頁面制作簡易版

    剛開始學(xué)習(xí)Java。文件的命名,講道理應(yīng)該以英文為主,但是英語又不好,所以只好用拼音,最痛苦的應(yīng)該算是那些英語又不好,又想秀一下的程序員,一半英語一半拼音,如mainFangFa~~~你說看了糟心不糟心。 目錄 1、form表單定義和用法 1.1input標(biāo)簽定義和用法 1.2label標(biāo)簽for屬性

    2024年02月01日
    瀏覽(18)
  • VUE html5-qrcode H5掃一掃功能

    官方文檔??html5-qrcode 安裝? ?npm i html5-qrcode 1、新建一個組件? 2、引入 3、獲取攝像權(quán)限在created調(diào)用 4、獲取掃碼內(nèi)容 5、必須在銷毀頁面前關(guān)閉掃碼功能否則會報錯?? could not start video source 6、在掃碼頁面引用組件 組件完整代碼 引用組件頁面

    2024年02月16日
    瀏覽(27)
  • HTML5網(wǎng)頁制作 我的心靈小屋

    HTML5網(wǎng)頁制作 我的心靈小屋

    代碼如下:

    2024年02月08日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包