0

最新のkineticjs(v.3.10)を使用しています。

クリックするとキャンバスの外側にあるキャンバスに画像を送信するために、単一の関数を使用しています。画像をドラッグ可能にしています..ダブルクリックで画像を削除する機能も追加しました。画像をダブルクリックすると..最後に追加された画像が削除され、その後他の画像をクリックしようとすると..次のエラーが発生します: TypeError: this.children[child.index] is undefined

ここに小さなコードがあります。

この関数を使用して、ajax を使用して別のファイルからパスを取得する

       function loadajax(imgpath,imgid){

            sources = {
            yoda1 : imgpath,
        };
        loadImages(sources,initStage1);
      };

ソース機能:----

       function loadImages(sources, callback){
        var images = {};
        var loadedImages = 0;
        var numImages = 0;
        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 initStage1(images){ 
            yodaGroup1 = new Kinetic.Group({
            x: 100,
            y: 110,
           draggable: true,
            });
            layery = new Kinetic.Layer();
            layery.add(yodaGroup1);
            stage.add(layery);
            var yoda1 = new Kinetic.Image({
            image: images.yoda1,
            x: 0,
            y: 0,
            width: 100,
            height: 120,
            name:"image",
            detectionType:"Pixel"
            });



    yodaGroup1.add(yoda1);
    yodaGroup1.on("dragstart", function() {

          yodaGroup1.moveToTop();
          layery.draw();
        });
    yodaGroup1.on("dblclick dbltap", function() {
          layery.remove(yodaGroup1);
          layery.draw();
        });          
    yodaGroup1.on("dragend", function() {
            layery.draw();
            yoda1.saveImageData();
                    });
    addAnchor(yodaGroup1,0, 0, "topLeft");
    addAnchor(yodaGroup1, 100, 0, "topRight");
    addAnchor(yodaGroup1, 100, 120, "bottomRight");
    addAnchor(yodaGroup1, 0, 120, "bottomLeft");




    stage.draw();   
    yoda1.saveImageData();         

        }

今、この関数によれば、キャンバスに画像を追加できるはずです(正常に動作しています) ドラッグすると、ある画像を別の画像の上に移動できるはずです(.ie.moveToTop関数)_動作しません を削除できるはずですダブルクリック時の画像 (最後に追加された画像に対してのみ機能)

助けてください

ありがとう

4

2 に答える 2

2
layery.remove(yodaGroup1);

この関数を参照します:

  • remove()ステージからレイヤーを削除します

http://www.kineticjs.com/docs/symbols/Kinetic.Layer.php#remove

レイヤーに含まれるノードを1つだけ削除する機能はありません:/

于 2012-10-28T21:47:20.907 に答える
1

レイヤーに含まれるノードを削除するには、次のようにします。

node.remove();

したがって、あなたの場合は次のようにします。

yodaGroup1.remove();
layery.draw();

http://kineticjs.com/docs/Kinetic.Image.html

于 2013-08-05T03:45:12.177 に答える