如何从画布上单击删除位图图像

时间:2018-01-09 16:58:03

标签: javascript bitmap html5-canvas createjs easeljs

我使用createjs作为我的框架。我在画布上放置了一个Bitmap,我创建了一个尝试删除它的函数但是我在控制台中不断收到错误消息,表明图像没有定义。这就是我的代码:

// onload=init() called in html doc
function init(){

var canvas = new createjs.Stage("canvas");

// Add image to canvas
image = new createjs.Bitmap("image.png");
image.x = 200;
image.y = 180;
image.scaleX = 0.35;
image.scaleY = 0.35;
canvas.addChild(image);

image.addEventListener('click', pop);

canvas.update();
}

//remove image from canvas
function pop() {
console.log('pop');
canvas.removeChild(image);
}

当我点击它时,我收到控制台消息" pop"然后是我上面提到的错误。我尝试在init中移动函数,但我似乎遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

这是一个范围问题。您在image函数中定义了init,因此无法通过pop方法访问它。

有两个简单的修复方法。将var image移到init函数之外,或者改为使用点击目标。

var image;
function init() {
  init = new createjs.Bitmap();
  // etc
}

// OR

function pop(event) {
  stage.removeChild(event.target);
}

在构建JavaScript应用程序时,范围对于理解非常重要,因此我建议更好地了解它:)

干杯,

答案 1 :(得分:0)

将图像作为全局变量,以便可以通过案例函数pop中的所有函数访问它。

 var image;// defining 'image' variable as global
 function init(){

    var canvas = new createjs.Stage("canvas");

   // Add image to canvas
   image = new createjs.Bitmap("image.png");
   image.x = 200;
   image.y = 180;
   image.scaleX = 0.35;
   image.scaleY = 0.35;
   canvas.addChild(image);

   image.addEventListener('click', pop);

   canvas.update();

}

//remove image from canvas
function pop() {
  console.log('pop');
  canvas.removeChild(image);
}