当前位置: 首页 > 知识库问答 >
问题:

基于jQuery的无冲突游戏音频系统

谯皓君
2023-03-14

我对播放音频感到困惑,我使用jQuery。 在我的html应用程序中,

   <div id="page-029">
   <div class="invisible-exe" data-pageload-run="$('.ambience-04').trigger('play');$('.paper-flip-sfx').play()"></div>

   <h1>A Nightingale’s Cove</h1>
   <p>Later the pirates' flipcanons had set the quick brown fox to shriveling yet so long story chapter’s paragraph.</p>

   <button data-click-run="$('.button-click-sfx').trigger('play')">Page 30</button>

   </div> <!-- END of page 29 -->
   
   <div id="page-030">
   <div class="invisible-exe" data-pageload-run="$('.ambience-04').trigger('play');$('.paper-flip-sfx').play()"></div>

   <p>You’re about to encountering The Marshmallow Brigand. Would you save your progress so far?</p>
   <button data-click-save data-click-run="$('.button-click-sfx').trigger('play')">Save the progress</button>

   <p>And let’s see what this big galleon made of! Funny broken grammars into the battle!</p>
   <button data-click-run="$('.button-click-sfx').trigger('play')">Page 31</button>

   </div> <!-- END of page 30 -->

   <audio class="ambience-03" src="audio/BGM_03.ogg" type="audio/ogg"></audio>
   <audio class="ambience-04" src="audio/BGM_04.ogg" type="audio/ogg"></audio>
   <audio class="ambience-05" src="audio/BGM_05.ogg" type="audio/ogg"></audio>
   <audio class="ambience-06" src="audio/BGM_06.ogg" type="audio/ogg"></audio>

   <audio class="button-click-sfx" src="audio/click_sound.ogg" type="audio/ogg"></audio>
   <audio class="paper-flip-sfx" src="audio/paper_flip.ogg" type="audio/ogg"></audio>
   <audio class="canon-boom-sfx" src="audio/canon_boom.ogg" type="audio/ogg"></audio>
   <audio class="sword-clang-sfx" src="audio/sword_clang.ogg" type="audio/ogg"></audio>

问题是:

-我怎么能有一个页面播放BGM_04歌曲时,该页面被加载,但所有其他歌曲,包括BGM_03,必须是当前正在运行,以不也运行?

-如果第30页(下一页)的标签中仍有BGM_04,如何使歌曲不停止,也不从一开始就运行,而是持续运行?

-如何使按钮点击和其他sfx的声音不干扰歌曲?

[data-pageload-run]等只是一个例子,它们使用的是分离的脚本,但它们工作得很好。 该函数类似于but,用于每个fadeIn页面。 不是问题所在。 是音响系统让我迷惑了。 希望有人能告诉我怎么做。

共有1个答案

柳玄裳
2023-03-14

更新:但是现在背景音乐是双倍播放,就像多个层一样,每当执行另一个音频的事件启动时,它会在层上添加新的音频。

如何使它只播放一个bgm一次?

/* !!! ADDED — [data-load-bgm] playing background music. !!! */
thisLabel = "data-load-bgm";
if ($element.hasAttr(thisLabel)){
(function(){

var bgmLink = Util.getAttributeValue($element, thisLabel, 1);
var bgmLinkVol = Util.getAttributeValue($element, thisLabel, 2);
var noVolValue = Util.isUndefined($element, thisLabel, 2);
var volValue = 0;
var bgm = "song0";
var bgmAll = $(".bgm-1, .bgm-2, .bgm-3, .bgm-4, .bgm-5, .bgm-6, .bgm-7, .bgm-8, .bgm-9, .bgm-10");
var bgm1 = $(".bgm-1");
var bgm2 = $(".bgm-2");
var bgm3 = $(".bgm-3");
var bgm4 = $(".bgm-4");
var bgm5 = $(".bgm-5");
var bgm6 = $(".bgm-6");
var bgm7 = $(".bgm-7");
var bgm8 = $(".bgm-8");
var bgm9 = $(".bgm-9");
var bgm10 = $(".bgm-10");

if (volValue == 0){bgmVol = 0.5};
if (bgmLinkVol != noVolValue){bgmVol = bgmLinkVol;}

if (bgmLink == "vol"){bgmAll.animate({volume: bgmLinkVol}, 600);bgmVol = bgmLinkVol;}

if (bgmLink == "bgm1"){
if (bgm == "song1"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm1.prop("volume", 0);setTimeout(function(){
bgm1.trigger("play");
bgm1.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song1";}}

if (bgmLink == "bgm2"){
if (bgm == "song2"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm2.prop("volume", 0);setTimeout(function(){
bgm2.trigger("play");
bgm2.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song2";}}

if (bgmLink == "bgm3"){
if (bgm == "song3"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm3.prop("volume", 0);setTimeout(function(){
bgm3.trigger("play");
bgm3.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song3";}}

if (bgmLink == "bgm4"){
if (bgm == "song4"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm4.prop("volume", 0);setTimeout(function(){
bgm4.trigger("play");
bgm4.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song4";}}

if (bgmLink == "bgm5"){
if (bgm == "song5"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm5.prop("volume", 0);setTimeout(function(){
bgm5.trigger("play");
bgm5.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song5";}}

if (bgmLink == "bgm6"){
if (bgm == "song6"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm6.prop("volume", 0);setTimeout(function(){
bgm6.trigger("play");
bgm6.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song6";}}

if (bgmLink == "bgm7"){
if (bgm == "song7"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm7.prop("volume", 0);setTimeout(function(){
bgm7.trigger("play");
bgm7.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song7";}}

if (bgmLink == "bgm8"){
if (bgm == "song8"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm8.prop("volume", 0);setTimeout(function(){
bgm8.trigger("play");
bgm8.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song8";}}

if (bgmLink == "bgm9"){
if (bgm == "song9"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm9.prop("volume", 0);setTimeout(function(){
bgm9.trigger("play");
bgm9.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song9";}}

if (bgmLink == "bgm10"){
if (bgm == "song10"){} else {bgmAll.animate({volume: 0}, 1400);setTimeout(function(){bgmAll.trigger("pause")}, 1400);
bgm10.prop("volume", 0);setTimeout(function(){
bgm10.trigger("play");
bgm10.animate({volume: bgmVol}, 1400);}, 1400);
bgm = "song10";}}

})();
};
 类似资料:
  • 我在做一个小的迷你瓷砖引擎游戏。我目前正致力于实现简单的基于块的碰撞检测,然而我遇到了实际的问题。我已经在谷歌上搜索了几个小时,查看了不同的实现,但似乎无法理解它。我目前的努力(只在玩家向右移动时检测碰撞),大部分工作,但允许玩家通过障碍物的底部。碰撞使用法线映射数组来检测碰撞,映射中的任何值2都是一个实体对象。 我明白了我需要做什么的概念--在我移动我的玩家之前,计算玩家将最终进入哪个单元格。检

  • 我正在制作一个HTML5 Runner Game,对象连续运行,鼠标“点击”时,他会跳。然后我在游戏中添加一个障碍并检测碰撞,但它不能正常工作。问题是,当障碍物与跑步物体碰撞一次并检测到碰撞时,清除所有物体,然后在画布上重新绘制障碍物,但当障碍物一次又一次碰撞时,物体的速度变得越来越快……:(问题是如何克服它?代码如下:

  • 目前,我正在尝试用Java开发基于2D平铺的侧滚游戏,主要基于David Brackeen的“用Java开发游戏”中的代码和示例 目前地图文件的大小为100x100个图块(每个图块为64x64像素)。我已经将系统配置为仅显示玩家可见的图块。Graphics系统由ScreenManager类管理,该类返回当前BufferStrategy的图形对象,如下所示: ScreenManager.java 来

  • 本文向大家介绍jQuery无冲突模式详解,包括了jQuery无冲突模式详解的使用技巧和注意事项,需要的朋友参考一下 解决冲突的方法: 在jQuery中解决冲突的方法是noConflict()方法,这个方法将$标识符的控制权返回给其他JavaScript库 如以下示例中的jQuery代码将在将jQuery加载到页面后立即将其置于无冲突模式,并分配新的变量名称$j以替换$别名,以避免与原型框架冲突。详

  • 我有一个2维数组叫做,也就是32x32。每个元素表示清除路径,表示墙。 窗口分辨率为800x800,这意味着

  • 我正在Java制作一个基于文本的冒险游戏。我需要让用户能够拿起物品并将其放入库存中,但我不确定如何做到! 这是我的项目当前的设置方式: 我需要能够在某些房间里有特定的物品。有人有什么建议吗?

  • 所以我有(gridLayout),每个JXButton都有一个图标,一个播放器所属的片段,并且有一个。 我目前正在努力使战略游戏(两个球员-我处理两者)。我设置了图标,碎片和一个碎片应该如何移动。 现在我希望让它轮流播放。 我的思想播放器2件当播放器1转动时隐藏。 和应该改变图标时,播放器2。 如果这两种方法看起来还可以,那么我的问题在于如何实现转向。

  • 使用Cocos2D, 模仿QQ连连看写的一个连连看游戏Demo,有声音效果。 [Code4App.com]