bitmaplist[i] is undefined

bitmaplist[i] is undefined

本文关键字:is undefined bitmaplist      更新时间:2023-09-26

这里的代码在画布上随机的位置绘制5个草的图像。我给所有的草物体一个独特的名字。然后,我为每个草对象创建了一个click事件,它将显示它们各自的名称。

 bitmaplist[i].on('click',function vanish(event){
alert(bitmaplist[i].name);
 }
  );

但它一直给我错误,bitmaplist[i]是未定义的。这个问题的原因是什么?如何解决这个问题?

完整代码:

<html>
<head>
<script src="easeljs.js"></script>
</head>
<body>
<canvas id="mycanvas" width="1000" height="500" style="border:1px solid black;"></canvas>
<script>
function makeit(){
  var bitmaplist=[];
  var i;
  var canvas=document.getElementById("mycanvas");
  var ctx=canvas.getContext('2d');
  var stage=new createjs.Stage(canvas);
  var image=new Image();
  image.src="grass.jpg";

  for(i=0;i<5;i++){
   bitmaplist[i]=new createjs.Bitmap(image);

     bitmaplist[i].x=stage.canvas.width-Math.random()*900;
  bitmaplist[i].y=Math.random()*400;
  bitmaplist[i].name="grass"+i;
  bitmaplist[i].speed=Math.random()*5;
  bitmaplist[i].mouseEnabled=true;
  stage.addChild(bitmaplist[i]);
  stage.update();
    bitmaplist[i].on('click',function vanish(event){
alert(bitmaplist[i].name);
 }
  );
  }

}
window.onload=makeit;
</script>
</body>
</html>

尝试这个对象:

bitmaplist[i].on('click',function vanish(event){
   alert(this.name);
});

或使用target属性的事件对象:

bitmaplist[i].on('click',function vanish(event){
   alert(event.target.name);
});

点击这里阅读更多EventDispatcher