我需要让我的工作增量和减少变量mcnf5和cnt5。问题是在第一次传递代码中添加/减去1,然后减去3,5等...我不确切知道是什么导致它,但是当它点击zdenca_volba1,zdenca_volba2或zdenca_volba3并且延迟时我需要输入变量我设置。但增量的作用就像它不是这些功能的一部分一样。如何修改代码以正常工作延迟和增加?代码在actionscript3
中function zdeClick5(event:MouseEvent):void{
if ((zdenca5ON == false)&&(mcnf5 > 0)) {
zdenca_prace5.visible = true;
zdenca_prace5.zdenca_volba1.addEventListener(MouseEvent.CLICK,z1Click5);
function z1Click5(event:MouseEvent):void{
zdenca_prace5.visible = false;
zdenca5.play();
zdenca5ON = true;
setTimeout(timedFunction51,3000);
function timedFunction51() {
mcnf5--;
mcnt5++;
mcnft5.text = mcnf5.toString();
mcntt5.text = mcnt5.toString();
zdenca5ON = false;
zdenca5.stop();}
}
zdenca_prace5.zdenca_volba2.addEventListener(MouseEvent.CLICK,z2Click5);
function z2Click5(event:MouseEvent):void{
zdenca_prace5.visible = false;
zdenca5.play();
zdenca5ON = true;
setTimeout(timedFunction52,10000);
function timedFunction52() {
mcnf5--;
mcnt5++;
mcnft5.text = mcnf5.toString();
mcntt5.text = mcnt5.toString();
zdenca5ON = false;
zdenca5.stop();}
}
zdenca_prace5.zdenca_volba3.addEventListener(MouseEvent.CLICK,z3Click5);
function z3Click5(event:MouseEvent):void{
zdenca_prace5.visible = false;
zdenca5.play();
zdenca5ON = true;
setTimeout(timedFunction53,5000);
function timedFunction53() {
mcnf5--;
mcnt5++;
mcnft5.text = mcnf5.toString();
mcntt5.text = mcnt5.toString();
zdenca5ON = false;
zdenca5.stop();}
}
答案 0 :(得分:1)
所以这里的问题是你每次调用zdeClick5()时...你正在为所有子对象添加另一组侦听器(即... denca_prace5.zdenca_volba2.addEventListener())。这些监听器都指向内联处理程序(即.... function timedFunction53())。因此,当您添加重复的侦听器时,as3将忽略它。但是,这些并不重复,因为每次添加一个......它都指向一个全新的内联函数。
要解决此问题,我会在函数zdeClick5()之外设置事件监听器和处理程序(因此它们不会反复添加,因此它们可以指向每个侦听器的一个具体函数指针)。