我正在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次。但是,当我在开门的动画中单击另一扇门时,第二次单击的门也会打开。
防止这种情况的最简单方法是什么?预先感谢!