私はここにあるIonSound.js
というサウンドプレーヤーを使用しています。 http://ionden.com/a/plugins/ion.sound/en.html外部スコープイベントでPromise.fulfillをトリガーする
文書によると、私はそうのようなsound.ended
イベントをリッスンすることができます
ion.sound({
sounds: [
{name: "door_bump"},
{name: "water_droplet_2"},
{name: "water_droplet_3"}
],
ended_callback: function (sound) {
// sound ended
game.sound.soundEnded(sound);
}
});
私はこれの上に非常に基本的なラッパーをしました。今
class Sound
{
constructor(ion) {
this.ion = ion;
this.promises = {};
}
play(sound) {
if (game.settings.muted === false) {
this.ion.sound.play(sound);
}
this.promises[sound] = new Promise((accept, reject) => {
});
return this.promises[sound];
}
soundEnded(sound) {
if (this.events.hasOwnProperty(sound.name) === true) {
Promise.resolve(this.promises[sound.name])
}
}
}
、私は次のコードを実行すると:
game.sound.play("level-up");
ended_callback
トリガを。その後、sound.soundEnded
が呼び出されます。
問題は、それほど混乱することです。私が代わりにやりたいことは、私はそうのようにそれを使用することができますので、私のSoundクラスをpromisifyingです:
game.sound.play("level-up").then(() => {
console.log("Sound is over.");
});
をそれを行うためには、コードのこの作品は、私がthis.promises
ハッシュに保たれ、私の約束をfulfill()
する必要があります。
Promise.resolve(this.promises[sound.name]);
が、それはこのように果たすトリガするために任意のメソッドを持っていません。
this.promises[sound.name].fulfill();
任意のアイデア?
あなたが素晴らしいです。神はあなたのdogeを祝福! – Aris