0

これを機能させるためにすべてを試しましたが、数字をハードコーディングして終了しましたが、ステージにマウスオーバーしても何も起こりません。マウスオーバー(またはmousemove)は、実際に画像自体の上にいるときにのみアクティブになります。ステージ上でマウスを動かすたびに画像を左右に動かす方法を教えてもらえますか?

stage.on('mouseover', function(){ var mousePos = stage.getUserPosition(); if (mousePos.x >= 289) { rect.move(5, 0); } else { rect.move(-5,0); } stage.add(layer); });

4

1 に答える 1

1

画像の前にRectangle(Transparent)を追加すると、KineticJSMoveroverが機能します。以下のコード、その動作を参照してください。

<!DOCTYPE HTML>
<html>  
  <head>    
    <style>      
      body {
        margin: 0px;
        padding: 0px;
      }
      canvas {
        border: 1px solid #9C9898;
      }
    </style>
    <script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.0.0.js"></script>
    <script>
      window.onload = function() {
        var stage = new Kinetic.Stage({
          container: "container",
          width: 578,
          height: 200
        });
        var layer = new Kinetic.Layer();
        var imageObj = new Image();
        imageObj.onload = function() {
          var yoda = new Kinetic.Image({
            x: 140,
            y: stage.getHeight() / 2 - 59,
            image: imageObj,
            width: 106,
            height: 118
          });         
          var rect = new Kinetic.Rect({
              x: 0,
              y: 0,
              width: stage.getWidth(),
              height: stage.getHeight()
          });

          layer.add(rect);
          layer.add(yoda);
          stage.add(layer);

          stage.on('mousemove', function(){ 
            var mousePos = stage.getUserPosition(); 
            if (mousePos.x >= 289) 
            { 
              yoda.move(5, 0);
            } 
            else 
            { 
              yoda.move(-5, 0);
            } 
            layer.draw();
          });
        };
        imageObj.src = "http://www.html5canvastutorials.com/demos/assets/yoda.jpg";
      };
    </script>
  </head>
  <body>
    <div id="container"></div>
  </body>
</html>
于 2012-08-30T10:41:59.173 に答える