2

私のhtml5ベースのクリッピング制約をチェックしてください

http://shedlimited.debrucellc.com/test3/canvaskinclip.html

( http://jsfiddle.net/aqaP7/4/でjsfiddleをいじる)

したがって、html5では、次のような形の境界線を簡単に描くことができます。

         context.beginPath();
  context.moveTo(5, 5);
  context.lineTo(34, 202);

  context.lineTo(2, 405);
  context.lineTo(212, 385);
  context.lineTo(425, 405);
  context.lineTo(400, 202);
  context.lineTo(415, 10);
  context.lineTo(212, 25);
                context.clip();

ただし、kinetic.jsでは、クリッピングオプションについて表示されるのは、高さ、幅、およびx、y、

私は次のことに遭遇しました:KineticJSでポリゴンを使用して画像をマスク/クリップしますが、内側/塗りつぶしの画像をドラッグ可能に設定できません

助けてください!

4

1 に答える 1

2

新しいkineticJSバージョンでは、多くの作業がバックグラウンドで実行されます。

このチュートリアルを見てください:

このフィドルはあなたをかなり近づけます、ここにコードがあります:

 <body>
    <div id="container"></div>
    <script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.3.0-beta2.js"></script>
    <script>
      function loadImages(sources, callback) {
        var images = {};
        var loadedImages = 0;
        var numImages = 0;
        // get num of sources
        for(var src in sources) {
          numImages++;
        }
        for(var src in sources) {
          images[src] = new Image();
          images[src].onload = function() {
            if(++loadedImages >= numImages) {
              callback(images);
            }
          };
          images[src].src = sources[src];
        }
      }
      function draw(images) {
        var stage = new Kinetic.Stage({
          container: 'container',
          width: 600,
          height: 700
        });
        var layer = new Kinetic.Layer();

        var patternPentagon = new Kinetic.RegularPolygon({
          x: 220,
          y: stage.getHeight() / 4,
          sides: 5,
          radius: 70,
          fillPatternImage: images.yoda,
          fillPatternOffset: [-220, 70],
          stroke: 'black',
          strokeWidth: 4,
          draggable: true
        });


        patternPentagon.on('dragmove', function() {
        //this.setFillPatternImage(images.yoda);
          //this.setFillPatternOffset(-100, 70);
          var userPos = stage.getUserPosition();
          this.setFillPatternOffset(-userPos.x,-userPos.y);
          layer.draw();
            this.setX(220);
            this.setY(stage.getHeight() / 4);
        });


        layer.add(patternPentagon);

        stage.add(layer);
      }
      var sources = {
        darthVader: 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg',
        yoda: 'http://www.html5canvastutorials.com/demos/assets/yoda.jpg'
      };

      loadImages(sources, function(images) {
        draw(images);
      });

    </script>
  </body>

オブジェクトをグループ化する場合のように、背景パターンにすることなくこれを行うには、より複雑で正確な方法があります。

于 2013-01-17T15:19:04.997 に答える