SoundJS를 사용하여 Psuedo MPC를 작성합니다. 원하는 방식으로 프로그래밍 된 사운드 키트 단추가 있지만 원하는대로 작동하도록 루프를 가져올 수 없습니다.SoundJS로 재생/일시 정지를 전환하려면 어떻게합니까?
- 사용자가 "loop1"을 클릭하여 재생하고 싶습니다.
- 사용자가 "loop1"을 다시 클릭하면 중지하고 다시 설정해야합니다.
- "loop1"이 재생되는 동안 사용자가 "loop2"를 클릭하면 "loop1"이 중지되고 "loop2"가 재생되기 시작하면서 재설정됩니다.
어떻게이 문제를 마스터 할 수 있습니까? 경고, 저는 UI/UX 디자이너로서 마음에두고 여전히 자바 스크립트를 배우므로, 설명 할 때 좀 더 자세히 설명해 주면 좋을 것 같습니다. 감사!
여기 아래에있는 내 코드의 일부를하지만, 행동에서 볼 여기 확인 : 당신이 변수에 할당하여 그것들을 연주하기 시작 한 후 소리를 수정할 수 있습니다 http://nowthatsgenius.com/clients/beatbox/
<body onload="init();">
<section class="player-container">
<article class="player-controls">
<ul class="player-controls">
<li class="player-controls-button" id="loop1" onclick="playSound(this)">Loop 1</li>
<li class="player-controls-button" id="loop2" onclick="playSound(this)">Loop 2</li>
</ul>
</article>
</section>
<section class="mpc-container">
<article class="mpc-title mpc-col">
<span class="text">V1</span>
</article>
<article class="mpc-controls mpc-col">
<ul class="mpc-controls-wrap">
<li class="mpc-controls-row">
<ul>
<li class="mpc-controls-button" id="a1" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a2" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a3" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a4" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a5" onclick="playSound(this)"></li>
</ul>
<ul>
<li class="mpc-controls-button" id="a6" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a7" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a8" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a9" onclick="playSound(this)"></li>
<li class="mpc-controls-button" id="a10" onclick="playSound(this)"></li>
</ul>
</li>
</ul>
</article>
</section>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="http://code.createjs.com/soundjs-0.6.0.min.js"></script>
<script>
var preload;
function init() {
if (!createjs.Sound.initializeDefaultPlugins()) {
document.getElementById("error").style.display = "block";
document.getElementById("content").style.display = "none";
return;
}
var assetsPath = "assets/";
var sounds = [
{id:"loop1", src:"loop1.mp3"},
{id:"loop2", src:"loop2.mp3"},
{id:"a1", src:"snare.wav"},
{id:"a2", src:"kick1.wav"},
{id:"a3", src:"clap1.wav"},
{id:"a4", src:"closedhat.wav"},
{id:"a5", src:"cymbal.wav"},
{id:"a6", src:"kick2.wav"},
{id:"a7", src:"clap2.wav"},
{id:"a8", src:"openhat.wav"},
{id:"a9", src:"voice1.wav"},
{id:"a10", src:"voice2.wav"},
];
$('.player-controls-button').attr("disabled",true);
createjs.Sound.alternateExtensions = ["mp3"];
createjs.Sound.addEventListener("fileload", createjs.proxy(handleLoadComplete, this));
createjs.Sound.registerSounds(sounds, assetsPath);
}
function playSound(target) {
var instance = createjs.Sound.play(target.id, createjs.Sound.INTERRUPT_NONE);
$(".player-controls-button").click(function(event) {
if (instance.playState == createjs.Sound.PLAY_SUCCEEDED) {
instance.stop();
}
else {
instance.play(target.id, createjs.Sound.INTERRUPT_NONE);
}
});
console.log(instance.playState);
}
</script>
</body>
나는 변화를 만들었고 또한 기능을 분리했다. 루프는 서로를 멈출 수 있지만 루프는 멈추지 않습니다. 루프를 연주하고 멈추려 고하면 다시 재생됩니다. 나는 여러 가지 수정 프로그램을 시도하고 아무데도 갈 수 없었다. 그게 뭐라고 생각하니? 모든 것을 업로드했습니다 : http://nowthatsgenius.com/clients/beatbox/ 모든 코드는 소스의 한 페이지에 있습니다. 감사합니다. – madebyporter
루프가 멈추지 않는다는 것은 무엇을 의미합니까? 나는 loop1을 클릭했을 때 처음부터 재설정하고 다시 재생하기를 원한다고 생각했다. 첫 번째 클릭에서 재생하고 두 번째 클릭에서 중단하고 세 번째 클릭에서 0부터 다시 시작 하시겠습니까? – Marquizzo
사과드립니다. 내가 단순화하려고하자. 사용자가 loop1을 클릭한다. 루프 1이 재생됩니다. loop1이 재생되는 동안 사용자가 loop1을 클릭하면 loop1이 중지됩니다. loop1이 재생되는 동안 사용자가 loop2를 클릭하면 loop1이 재생을 멈추고 loop2가 재생되기 시작합니다. 두 루프는 동시에 재생하면 안됩니다. 사용자가 "loop1"을 클릭하면 피아노 키보드 나 MPC처럼 "loop1"버튼이 깜박이기 때문에 별도의 켜기/끄기 버튼을 원하지 않습니다. – madebyporter