当另一个事件被触发时,Javascript删除eventListener

时间:2018-11-28 11:08:28

标签: javascript

我正在Blippar中创建一个简单的ES5 JS应用程序,该应用程序使用了一个相当容易理解的API。您可以使用JavaScript制作AR应用程序。我正在创建一个带有31个门的日历,所以我必须声明31个变量(我知道,这不是最有效的方法,但是它正在工作。)在这些变量中,我创建了要打开的“门”,并且它们都有一个一些内容的背景图像。这很容易,其想法是使用Date()来检查是否可以打开门(这是圣诞节日历)。

对于每个门,它看起来像这样:

var deur1 = scene.addSprite("d1.jpg").setName("deur1").setTranslation(227,142,doorValueZ).setScale(doorScaleX, doorScaleY);
  var deur1text = scene.addSprite("d1text.jpg").setName("deur1text").setTranslation(227, 142, textValueZ).setScale(doorScaleX, doorScaleY).setRotationY(-180);

  deur1.onTouchEnd = function() {
    if (door1Openable == 1) {
      deur1.animate().rotationY(180).rotationX(360).scale(openStateScaleX,360).translation(0,0,doorOpenValueZ).duration(1000);
      deur1text.animate().rotationY(0).rotationX(360).scale(openStateScaleX,360).translation(0,0,textOpenValueZ).duration(1000);

      setTimeout(function(){
        door1State = 1;
      }, 1500);
    } else {
      return false;
    }
  }

我正在使用setTimeout为1.5s将状态设置为1,因为整个屏幕上还有一个侦听器,当状态为1时,用户单击屏幕上的任意位置,“门”将再次关闭。如果没有该setTimeout,它将立即设置为1,并且门将不会打开。

因此,这基本上发生了31次。但是,当我在开门的动画中单击另一扇门时,第二次单击的门也会打开。

防止这种情况的最简单方法是什么?预先感谢!

0 个答案:

没有答案