不良增量AS3

时间:2016-10-08 17:07:08

标签: actionscript-3 increment

我需要让我的工作增量和减少变量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();}    
}

1 个答案:

答案 0 :(得分:1)

所以这里的问题是你每次调用zdeClick5()时...你正在为所有子对象添加另一组侦听器(即... denca_prace5.zdenca_volba2.addEventListener())。这些监听器都指向内联处理程序(即.... function timedFunction53())。因此,当您添加重复的侦听器时,as3将忽略它。但是,这些并不重复,因为每次添加一个......它都指向一个全新的内联函数。

要解决此问题,我会在函数zdeClick5()之外设置事件监听器和处理程序(因此它们不会反复添加,因此它们可以指向每个侦听器的一个具体函数指针)。