0

助けが必要です..それがkinetic.jsライブラリの問題なのか、ここで何か間違っているのかわかりません.. windows.onloadに2つの画像を読み込んでいると、キャンバスの外側に画像のセットがあり、正常に機能しているキャンバス内に配置している画像..(これを行うことにより、キャンバスの外部から任意の画像をロードするために1つの関数を使用しました..画像のセット:

     <li>
        <a href="javascript:void(0)" onclick="loadWithType(document.getElementById('i3'))">

        <img src="<?php echo base_url()?>images/eagle/baby1.png" id="i3"  alt="Pulpitrock"width="100" height="120" /></a>
         <a href="javascript:void(0)" onclick="removewithType(document.getElementById('i3'))">Close</a>
       </li>
     <li>
        <a href="javascript:void(0)" onclick="loadWithType(document.getElementById('i4'))">
        <img src="<?php echo base_url()?>images/eagle/pattern-1.png" id="i4" alt="Pulpit rock" width="100" height="120" /></a>
        <a href="javascript:void(0)" onclick="removewithType(document.getElementById('i4'))">Close</a>
        </li>

画像の読み込み

         function loadWithType(img){
        var sources = {
            yoda1 : img.src,
        };
        loadImages(sources,initStage1);
      };

関数(位置とすべてを定義する)

           function initStage1(images){ 

            layert = new Kinetic.Layer();

            var yoda1 = new Kinetic.Image({
            image: images.yoda1,
            x: 106,
            y: 0,
            width: 180,
            height: 220,
            draggable:true,
            detectionType: "pixel"

            });


                    /*
                     * check if animal is in the right spot and
                     * snap into place if it is
                     */
                    yoda1.on("dragend", function() {
                            layert.draw();
                            // disable drag and drop

                            yoda1.saveImageData();
                    });

            layert.add(yoda1);
            stage.add(layert);
            yoda1.saveImageData();

            }

これは正常に機能しています..(画像をクリックすると画像が読み込まれます)

しかし、ボタンを閉じることで画像を削除しようとすると、最新の画像が削除され、その後ライブラリがエラーをスローするので問題が発生します。私はこのようなことをしています。

          function removewithType(img){
        var sources = {
            yoda1 :img.src,
        };
        loadImages(sources,removeStage1);
        }

         function removeStage1(images){

                var yoda1 = new Kinetic.Image({
                image: images.yoda1,
                x: 106,
                y: 0,
                width: 180,
                height: 220,
                draggable:true,

            });
                layert.clear();
                stage.remove(layert);
                layert.draw();

                 }

ここでまず最初に..layert.remov(yoda1)関数が機能していません。

この関数は予期しない動作をしています。

任意のポインタ

ありがとう..

4

1 に答える 1

1

画像を削除する理由が画像を隠している場合は、単純に .hide() 関数を使用できます。

yoda1.hide();
layert.draw();

コードのもう 1 つの問題は、コードlayert.draw();を削除した後に使用したことですstage.remove(layert);。そのため、このレイヤーを削除すると描画できなくなります。

于 2012-08-09T15:41:28.770 に答える