0

" "、" "、または " " の引数を取り、キャンバスに設定された新しいボタンを描画するdrawButtons関数があり、引数に応じてボタンを異なる色で描画します。から呼び出すと機能しますが、から呼び出すと機能しません。は 1秒間に 80 回呼び出されるため、 draw() から呼び出したいと思います。そうすれば、マウスがボタンの上にあるかどうかをチェックし続け、適切なボタン セットを描画できます。nonhoverhover1hover2setUpGame()draw()draw()setInterval()

setUpGame()オブジェクトまたは関数の外で呼び出されます。関数またはオブジェクトの外にあるdraw()によって呼び出されます。setInterval()setInterval 呼び出しは、1 秒間に 80 回描画します。

getMouseOver()draw()「マウスがボタン1の上にある場合:drawButtons( "hover1")など」と表示されるため、実際に呼び出す必要がある別の関数です。呼び出すときにボタンを描画しません。

ブラウザの Javascript コンソールにエラーはありません。ゲームに最適な Chrome を使用しています。

drawButtons()このことから、 から呼び出されたときに機能したため、問題はないと推測できsetUpGame()ます。

draw()そこから呼び出したときにasが機能しないという問題がある可能性がありますdrawButtons()(ただし、さらに困惑させるために、そこから呼び出したときに displayNumbers が数字を表示します)。ゲーム、私たちはスタート画面にいます)。

getMouseOver()それはどこでも機能しないため、おそらく問題があります。

とりあえずお見せgetMouseOver()します。私のプログラムは大きくなっていて、最初からあまりにも多くを見せるのは圧倒されます。この関数は 1 秒間に 80 回呼び出される予定です。

getMouseOver: function() {
    window.onload = (function(){
        window.onmouseover = function(e) {
            // IE doesn't always have e here
            e = e || window.event;

            // get event location

            // change the code so that it gives the relative location
            var location = {
            x: e.pageX - offset.x,
            y: e.pageY - offset.y
            };
            if (location.x > 103.5 && location.x < 265.5) {
                if (location.y > 240 && location.y < 291) {
                    nonGameContent.drawButtons("hover1");
                }
            }
            if (location.x > 103.5 && location.x < 265.5) {
                if (location.y > 160 && location.y < 212) {
                    nonGameContent.drawButtons("hover2");
                }
            }
            else{
                nonGameContent.drawButtons("nonHover");
            }
        }
    })},
4

2 に答える 2

0

マウスオーバーしたときにキャンバスの四角形の色を変更するには、onmousemove を使用してその上にいるかどうかを確認し、別の色の四角形でキャンバスを再描画します

getMouseClick: function() { window.onmousemove = function(e) {

于 2013-07-26T03:25:06.800 に答える
0

このフィドルでは、機能している click() と onmousemove() があります。最初にボタンを表示したいのか、それともマウスがボタンの将来の場所のどこかにホバーしたときだけなのか、よくわかりませんでしたが、それは始まりです: http://jsfiddle.net/Akinaru/3a7g2/57/

主な修正:

 canvas.onmousedown = nonGameContent.getMouseClick;
 canvas.onmousemove = nonGameContent.getMouseOver;
于 2013-07-26T00:39:52.593 に答える