我正在尝试加载一台JS动态音频合成器

时间:2019-07-11 作者:Ahmed Faruq

我看到一个正在工作的Javascript钢琴,我想在我的页面上实现它作为一个短代码。我已经将Js文件排入队列,在查看页面源代码时可以看到它。

我是这样理解它的:

function chicken_wings_scripts() {

         wp_enqueue_script( \'audiosynth\',  get_stylesheet_directory_uri() . \'/js/audiosynth.js\', array(), null, true );
    }
}
我的主要挑战是我不知道如何调用代码在前端显示,因为文档对初学者不友好。

文档中说“audiosynth实现了一个单例类audiosynth”

Synth instanceof AudioSynth; // true

var testInstance = new AudioSynth;
testInstance instanceof AudioSynth; // true

testInstance === Synth; // true
这是钢琴的一个实用例子https://keithwhor.com/music/

1 个回复
最合适的回答,由SO网友:LebCit 整理而成

您的排队缺少操作
试试这个:

/**
 * Enqueue audiosynth.
 */
function chicken_wings_scripts() {

    wp_enqueue_script( \'audiosynth\', get_theme_file_uri( \'/js/audiosynth.js\' ), array(), filemtime( get_theme_file_path( \'/js/audiosynth.js\' ) ), true );

}
add_action( \'wp_enqueue_scripts\', \'chicken_wings_scripts\' );
-----EDIT FULL WORKING ANSWER-----
执行完全相同的步骤<假设您的主题名称为mytheme.
内部mytheme 文件夹,您应该找到js folder, 如果没有人创建js folder.
内部js foldermytheme, 添加3个empty 文件:
1-audiosynth.js
2-audiosynth.view.js
3-audiosynth.view.fire.js
在第一个文件中audiosynth.js, 复制并粘贴下载内容audiosynth.js 文件
在第二个文件中audiosynth.view.js, 复制并粘贴的内容this file.
在第三个文件中audiosynth.view.fire.js, ADD ONLY 以下代码:

var a = new AudioSynthView();
a.draw();
现在,打开functions.php 属于mytheme 并添加以下代码:

/**
 * Enqueue audiosynth.
 */
function audiosynth_scripts() {

    wp_enqueue_script( \'audiosynth\', get_theme_file_uri( \'/js/audiosynth.js\' ), array(), filemtime( get_theme_file_path( \'/js/audiosynth.js\' ) ), false );

    wp_enqueue_script( \'audiosynth.view\', get_theme_file_uri( \'/js/audiosynth.view.js\' ), array(), filemtime( get_theme_file_path( \'/js/audiosynth.view.js\' ) ), false );

    wp_enqueue_script( \'audiosynth.view.fire\', get_theme_file_uri( \'/js/audiosynth.view.fire.js\' ), array(), filemtime( get_theme_file_path( \'/js/audiosynth.view.fire.js\' ) ), true );

}
add_action( \'wp_enqueue_scripts\', \'audiosynth_scripts\' );
现在,打开style.css 文件内部mytheme 并在末尾添加以下内容:

.key {
    position: absolute;
    font-family: Helvetica;
    font-weight: 100;
    font-size: 12px;
    border: 1px solid rgba(32, 32, 32, 0.2);
    border-radius: 0px 0px 5px 5px;
    cursor: pointer;
    box-shadow: 0px 5px 1px rgba(32, 32, 32, 0.2);
    -webkit-transition: margin 0.05s ease, background-color 0.05s ease, box-shadow 0.05s ease;
}

.key:hover {
    background-color: rgb(255, 192, 32);
}

.key .label {
    position: absolute;
    bottom: 5px;
    text-align: center;
    left: 0px;
    right: 0px;
}

.black {
    background-color: rgb(32, 32, 32);
    color: #ffffff;
    z-index: 1;
    text-shadow: 0px -1px 1px rgba(255, 255, 255, 0.5);
}

.white {
    background-color: #ffffff;
    color: rgb(32, 32, 32);
    z-index: 0;
    text-shadow: 0px 1px 1px rgba(32, 32, 32, 0.5);
}

.keyboard-options {
    margin: 30px auto;
    width: auto;
    text-align: center;
    font-size: 12px;
    font-weight: 200;
    padding: 10px;
}

.keyboard-holder {
    margin: 30px auto;
    height: 200px;
    position: relative;
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -o-user-select: none;
}
现在,您应该添加以下代码,比如在header.php 内部的文件mytheme.
请勿将此代码放入<?php ?> tag,这是HTML :

<select ID="sound">
    <option value="0" selected>Keyboard</option>
    <option value="1">Organ</option>
    <option value="2">Acoustic Guitar</option>
    <option value="3">EDM, bro!</option>
</select>
<div ID="keyboard" class="keyboard-holder"></div>
<div class="keyboard-options">
    Range [C<span ID="OCTAVE_LOWER">3</span>-B<span ID="OCTAVE_UPPER">5</span>]
    <input type="button" ID="-_OCTAVE" value="-" />
    <input type="button" ID="+_OCTAVE" value="+" /><br />
    <i>(Use left/right arrows to adjust with keyboard)</i>
</div>
现在,去你的网站,刷新页面和tada!!!

SYA:)

相关推荐

带有jQuery的视频海报中的ACF中继器图像

jquery无法将url从图像发送到html标记。我解释;我有一个带有5个变量的ACF中继器,其中包括一个用于制作视频海报的图像,我想做的是,通过jquery,在900px的较小屏幕中,将属性“海报”添加到视频标签中。这是我的代码:<div class=\"video\"> <video class=\"thevideo\" loop muted> <source src=\"<?php echo $previews