Merge branch 'master' of github.com:h5p/h5p-memory-game

pull/43/head
Frode Petterson 2019-01-09 10:14:33 +01:00
commit 5c63b1f7ed
3 changed files with 40 additions and 17 deletions

35
card.js
View File

@ -66,11 +66,13 @@
var handlePlaying = function () {
if ($card) {
$card.addClass('h5p-memory-audio-playing');
self.trigger('audioplay');
}
};
var handleStopping = function () {
if ($card) {
$card.removeClass('h5p-memory-audio-playing');
self.trigger('audiostop');
}
};
audioPlayer.addEventListener('play', handlePlaying);
@ -115,24 +117,20 @@
return;
}
if (audioPlayer) {
audioPlayer.play();
}
$card.addClass('h5p-flipped');
self.trigger('flip');
flippedState = true;
if (audioPlayer) {
audioPlayer.play();
}
};
/**
* Flip card back.
*/
self.flipBack = function () {
if (audioPlayer) {
audioPlayer.pause();
audioPlayer.currentTime = 0;
}
self.stopAudio();
self.updateLabel(null, null, true); // Reset card label
$card.removeClass('h5p-flipped');
flippedState = false;
@ -150,11 +148,7 @@
* Reset card to natural state
*/
self.reset = function () {
if (audioPlayer) {
audioPlayer.pause();
audioPlayer.currentTime = 0;
}
self.stopAudio();
self.updateLabel(null, null, true); // Reset card label
flippedState = false;
removedState = false;
@ -236,8 +230,7 @@
$card.children('.h5p-back')
.click(function () {
if ($card.hasClass('h5p-memory-audio-playing')) {
audioPlayer.pause();
audioPlayer.currentTime = 0;
self.stopAudio();
}
else {
audioPlayer.play();
@ -289,6 +282,16 @@
self.isRemoved = function () {
return removedState;
};
/**
* Stop any audio track that might be playing.
*/
self.stopAudio = function () {
if (audioPlayer) {
audioPlayer.pause();
audioPlayer.currentTime = 0;
}
};
};
// Extends the event dispatcher

View File

@ -18,6 +18,10 @@
"label": "Texto alternativo para a imagem",
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
},
{
"label": "Audio Track",
"description": "An optional sound that plays when the card is turned."
},
{
"label": "Imagem-par",
"description": "Uma imagem opcional para ser combinada ao invés de utilizar dois cartões com a mesma imagem."
@ -26,6 +30,10 @@
"label": "Texto alternativo para a Imagem-par",
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
},
{
"label": "Matching Audio Track",
"description": "An optional sound that plays when the second card is turned."
},
{
"label": "Descrição",
"description": "Um texto curto opcional que aparecerá quando duas cartas forem combinadas corretamente."

View File

@ -22,7 +22,7 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
// Initialize event inheritance
EventDispatcher.call(self);
var flipped, timer, counter, popup, $bottom, $taskComplete, $feedback, $wrapper, maxWidth, numCols;
var flipped, timer, counter, popup, $bottom, $taskComplete, $feedback, $wrapper, maxWidth, numCols, audioCard;
var cards = [];
var flipBacks = []; // Que of cards to be flipped back
var numFlipped = 0;
@ -218,6 +218,9 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
*/
var addCard = function (card, mate) {
card.on('flip', function () {
if (audioCard) {
audioCard.stopAudio();
}
// Always return focus to the card last flipped
for (var i = 0; i < cards.length; i++) {
@ -260,6 +263,15 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
// Count number of cards turned
counter.increment();
});
card.on('audioplay', function () {
if (audioCard) {
audioCard.stopAudio();
}
audioCard = card;
});
card.on('audiostop', function () {
audioCard = undefined;
});
/**
* Create event handler for moving focus to the next or the previous