actionscript-3 - 如何在某些计数器值后停止按钮变为可点击?
问题描述
我尝试制作增加和减少按钮,但如果增加按钮达到最大值,它将变得不可用并阻止用户与增加按钮交互,反之亦然与减少按钮交互。
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 次并尝试点击减少按钮时,减少它需要时间。
解决方案
实际上,它比你做的要简单得多。
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);
}