首页 > 解决方案 > 如何在某些计数器值后停止按钮变为可点击?

问题描述

我尝试制作增加和减少按钮,但如果增加按钮达到最大值,它将变得不可用并阻止用户与增加按钮交互,反之亦然与减少按钮交互。

import flash.events.MouseEvent;

a1.visible=true;
a2.visible=false;
a3.visible=false;
plus.visible=false;
minus.visible=false;
final var clickCounter:Number=0;

e1.addEventListener(MouseEvent.CLICK, decider);

function decider(event:MouseEvent):void{
    plus.visible=true;
    minus.visible=true;

    if (a1.visible==true){
        plus.addEventListener(MouseEvent.CLICK, changer1);
        plus.addEventListener(MouseEvent.CLICK, increaser1);
        minus.addEventListener(MouseEvent.CLICK, changer1);
        minus.addEventListener(MouseEvent.CLICK, decreaser1);
    }
}

function increaser1(event:MouseEvent):void{
    clickCounter++;
    if(clickCounter==3){
        plus.removeEventListener(MouseEvent.CLICK, changer1);
        plus.removeEventListener(MouseEvent.CLICK, increaser1);
        minus.addEventListener(MouseEvent.CLICK, changer1);
        minus.addEventListener(MouseEvent.CLICK, decreaser1);
    }
}

function decreaser1(event:MouseEvent):void{
    clickCounter--;
    if(clickCounter==-1){
        plus.addEventListener(MouseEvent.CLICK, changer1);
        plus.addEventListener(MouseEvent.CLICK, increaser1);
        minus.removeEventListener(MouseEvent.CLICK, changer1);
        minus.removeEventListener(MouseEvent.CLICK, decreaser1);
    }
}

function changer1(event:MouseEvent):void{
     if(clickCounter==0){
          trace("1");
     }
     if(clickCounter==1){
        trace("2");
     }
     if(clickCounter==2){
        trace("3");
     }
}

这段代码设法做我想要存档的事情,但是当我点击增加按钮超过 3 次并尝试点击减少按钮时,减少它需要时间。

标签: actionscript-3

解决方案


实际上,它比你做的要简单得多。

var clickCounter:int = 2;

arrangeButtons();

plus.addEventListener(MouseEvent.CLICK, onPlusMinus);
minus.addEventListener(MouseEvent.CLICK, onPlusMinus);

function onPlusMinus(e:MouseEvent):void
{
    // Check for non-mouse interactions.
    if (!e.target.mouseEnabled) return;

    // Change the value based on which botton was clicked.
    clickCounter += ((e.currentTarget == plus)? 1: -1);

    // Adjust buttons to current counter value.
    arrangeButtons();

    // Output the values.
    trace(clickCounter + 1);
}

function arrangeButtons():void
{
    // Enable and disable buttons on margin values.
    minus.mouseEnabled = (clickCounter > 0);
    plus.mouseEnabled = (clickCounter < 2);

    // Display enabled/disabled status.
    minus.alpha = (minus.mouseEnabled? 1: 0.5);
    plus.alpha = (plus.mouseEnabled? 1: 0.5);
}

推荐阅读