Raphaelを使用して簡単な再生/一時停止ボタンシステムを作成しようとしていますが、スコープの問題が発生し続けます。
ボタン自体は、RaphaelのおかげでSVGタグに埋め込まれた画像にすぎません。目標は、この「イベントサイクル」を持つことです。
- play.pngが表示されている場合は、
onmouseover
remove()
play.pngとshowplay-hover.pngを表示します - play-hover.pngが表示されている場合、
onclick
remove()
play-hover.png show pause.png - pause.pngが表示されている場合は、
onmouseover
remove()
pause.png show pause-hover.png - pause-hover.pngが表示されている場合は、
onclick
remove()
pause-hover.png show play.png
それは本当にばかげているように見えますが、私はスコープとクロージャに本当に問題があります。これは私が現在持っているコードです:
function toPlay(pauseHover) {
pauseHover.remove();
var play = paper.image("images/play.png", Img.X, Img.Y, Img.height, Img.width);
play.node.onmouseover = toPlayHover(play);
}
function toPause(playHover) {
playHover.remove();
var pause = paper.image("images/pause.png", Img.X, Img.Y, Img.height, Img.width);
pause.node.onmouseover = toPauseHover(pause);
}
function toPlayHover(play) {
play.remove();
var playHover = paper.image("images/play-hover.png", Img.X, Img.Y, Img.height, Img.width);
playHover.node.onclick = toPause(playHover);
}
function toPauseHover(pause) {
pause.remove();
var pauseHover = paper.image("images/pause-hover.png", Img.X, Img.Y, Img.height, Img.width);
pauseHover.node.onclick = toPlay(pauseHover);
}
var play = paper.image("images/play.png", Img.X, Img.Y, Img.height, Img.width);
toPlayHover(play);
ファイアバグがコンソールにエラーを表示しないため、これが機能しない理由は正確にはわかりませんが、関数toPlayHover()
内で関数を呼び出すことができないためだと思いtoPlay()
ます。