【问题标题】:Kinetic.js removing image from canvas on click of a button outside the canvasKinetic.js 通过单击画布外的按钮从画布中删除图像
【发布时间】:2012-08-09 12:08:33
【问题描述】:

需要帮助.. 我不知道是 kinetic.js 库问题还是我在这里做错了什么。 我在 windows.onload 上加载 2 张图片 然后在画布外有一组图像,然后单击这些图像,我将它们放在画布内,效果很好..(我只使用了一个函数通过这样做从画布外部加载任何图像.. 图片集:

     <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) 函数不起作用。

这个函数的行为出人意料..

任何指针

谢谢..

【问题讨论】:

标签: javascript html drag-and-drop html5-canvas kineticjs


【解决方案1】:

如果您删除图像的原因是隐藏它,您可以简单地使用 .hide() 函数:

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

您的代码的另一个问题是您在删除它stage.remove(layert); 之后使用了layert.draw();,所以当您删除该层时,您无法绘制它。

【讨论】:

  • 欢迎您,如果您有任何其他问题,请告诉我。
猜你喜欢
  • 2020-10-19
  • 1970-01-01
  • 2020-06-05
  • 2021-05-01
  • 2015-01-05
  • 1970-01-01
  • 2015-07-29
  • 2021-04-30
  • 2020-10-01
相关资源
最近更新 更多