前提・実現したいこと
javascriptでゲームを作っています。
HTMLで作成した要素「キャラ」と「武器」をdocument.mousemoveでマウスストーカーさせて、
クリックしたときに剣の要素を90度変えて剣を振るような動作をさせようとしています。
発生している問題・エラーメッセージ
クリックしたときに剣の要素の角度をDOMで90度変える処理をしているのですが、時に剣が元の位置が右上に戻ってしまい、カーソルを動かすとまたマウスストーカーの処理が行われます、剣の位置を元に戻さないようにして、マウスストーカーさせながら剣を振る動作をするにはどうすればいいでしょうか。
該当のソースコード
JavaScript
1<style> 2#maru { /* 主人公のCSS */ 3pointer-events: none; 4position: absolute; 5top: -16px; 6left: -16px; 7width: 32px; 8height: 32px; 9background: rgba(37, 90, 168, 0.5); 10border-radius: 50%; 11transform: translate(0,0); 12transition: transform 1s; 13transition-timing-function: ease-out; 14z-index: 999; 15} 16 17 18 19#武器{ 20position: relative; 21width : 15px; 22height : 40px; 23pointer-events: none; 24transition: transform 1s; 25transition-timing-function: ease-out; 26z-index: 999; 27} 28 29#武器::after{ 30content : ""; 31position: absolute; 32top: -50px; 33left: 18px; 34width : 15px; 35height : 40px; 36background : linear-gradient(to bottom, #999999, #999999); 37transform : skewX(-30deg); 38 39pointer-events: none; 40transition: transform 1s; 41transition-timing-function: ease-out; 42z-index: 999; 43} 44</style> 45 46 47<script type="text/javascript"> 48function 攻撃(){ 49 武器.style.transform = "rotate(" + 90 + "deg)"; 50} 51 52function マウスアップ時の処理(){ 53 武器.style.transform = "rotate(" + 0 + "deg)"; 54} 55 56function 移動(e){ 57 this.name.style.transform = 'translate(' + e.clientX + 'px, ' + e.clientY + 'px)'; 58} 59 60 61document.addEventListener('mousedown', 攻撃); 62document.addEventListener('mouseup', マウスアップ時の処理); 63 64document.addEventListener('mousemove', {name: maru, handleEvent: 移動}, false); 65document.addEventListener('mousemove', {name: 武器, handleEvent: 移動}, false); 66 67 68 69 70 71 72 73</script> 74
回答1件
あなたの回答
tips
プレビュー