2014-06-13 46 views
-2

我有4個複選框。如果我選擇3並選擇4之後,則應該取消選中最早的複選框。我製作了一個帶有3個元素的Array,並填充了複選框。但我不能取消選中最古老的複選框。難道我做錯了什麼?AS3:有4個複選框,需要能夠選擇不多於3個

firstButton.addEventListener(MouseEvent.CLICK, myFunction); 
SecButton.addEventListener(MouseEvent.CLICK, myFunction); 
TherdButton.addEventListener(MouseEvent.CLICK, myFunction); 
FourButton.addEventListener(MouseEvent.CLICK, myFunction); 

var num:Number = 1 
var txt:Array = new Array (1+num) 
for (var i=1; i<3;i++){ 
    txt[i]=null 
} 
i=1 
function myFunction(But:MouseEvent):void { 
    if(But.currentTarget.selected == true) { 
    txt[i]=But.currentTarget.name 
i++ 
if (i==3){i=1} 
    } else { 
    for (var d=1;d<3;d++) { 
     if (txt[d]==But.currentTarget.name){ 
     txt[d]=null 
     i=d 
     } 
    } 
+0

_txt_是存儲該點擊目標的名稱的數組。當您取消選中某個框時,其名稱將從數組中刪除,但是代碼中沒有任何內容會影響框的已選中狀態。 – LGT

+0

您的意思是需要使用屬性複選框進行設置2數組。 Caz Null沒有,如果有名稱,則複選框被選中。所以問題是如何提供最後一個數組和設置屬性對象取消選中。 – user3735949

回答

0

好吧我讓它自我:)這是很好的嘗試使所有通用沒有名稱。只更改變量和MaxCheckBoxes自設置的最大值。

var checkMax:Number=3 
var i:Number = 1; 
var maxChecks:Number = 4; 
var ArrayMaxBut:Array=new Array(checkMax+1); 
var ArrayBut:Array=new Array(maxChecks+1); 
for (i=1; i<=maxChecks; i++) 
{ 
    ArrayMaxBut[i] = getChildByName("button"+i); 
    ArrayMaxBut[i].selected=false 
    ArrayMaxBut[i].addEventListener(MouseEvent.CLICK, myFunction); 
} 

for (i=1; i<=maxChecks; i++) 
{ 
    ArrayBut[i] = null; 
} 
i = 0 
function myFunction(Click:MouseEvent):void 
{ 
    if (Click.currentTarget.selected == true) 
    {i++ 
     if(i>checkMax){i-- 
      ArrayBut[i].selected=false 
      ArrayBut[i]=null 
      } 
      ArrayBut[i] = Click.currentTarget; 

    }else{i--}}