2012-11-20 40 views
3

我有一個組件,有一堆的組件,如果你點擊並拖動這些組件,他們點亮。如果您點擊並拖動這些相同的組件,它們將恢復到正常設置。 (同樣當他們被點擊和不點擊,一個百分比值被鏈接到顯示在組件右側)如何製作一個自定義的Flex 4按鈕來定位其他自定義高亮按鈕並取消選擇並取消選中它們?

現在我試圖創建一個「重置」按鈕,將百分比設置回零並且不突出所有部分先前選擇。但我得到一個「錯誤#1009無法訪問空對象引用的屬性或方法」,從我的函數(resetGVHD)底​​部的重置按鈕。

(另外, - showCaption是我使用,使其突出功能hideCaption是用於unhighlight功能。)

任何幫助將不勝感激! 謝謝!

這裏是我的代碼:

public var holdingPiece:Boolean = false; 
    public var holdingSelectedPiece:Boolean = false; 
    [Bindable] 
    public var numberBodyButtonSelected:Number = 0; 


    protected function pieMouseDownHandler(event:MouseEvent):void 
    { 
     var bodyButton:BodyButton= event.currentTarget as BodyButton; 
     if(bodyButton.selected){ 

      holdingSelectedPiece = true; 
      holdingPiece = false; 

      bodyButton.hideCaption(); 
      if (bodyButton.includedinBody){ 
       numberBodyButtonSelected -= bodyButton.percentageValue; 
       } 

      }else{ 

       holdingSelectedPiece = false; 
       holdingPiece = true; 

       bodyButton.showCaption(); 
       if (bodyButton.includedinBody){ 

      numberBodyButtonSelected+= bodyButton.percentageValue; 
       } 

      } 

     stage.addEventListener(MouseEvent.MOUSE_UP, releasePiece); 

     } 

     protected function pieRollOver(event:MouseEvent):void 
     { 

      var myPie:BodyButton = event.currentTarget as BodyButton; 

      if(holdingPiece){ 

       if(!myPie.selected){ 

        myPie.showCaption(); 
        if (myPie.includedinBody){ 
         numberBodyButtonSelected+= myPie.percentageValue; 
        } 
       } 

      }else if(holdingSelectedPiece){ 

       if(myPie.selected) { 

        myPie.hideCaption(); 
        if (myPie.includedinBody){ 
       numberBodyButtonSelected-= myPie.percentageValue; 
        } 
       } 

      } 

     } 


     protected function releasePiece(event:MouseEvent):void 
     { 

     stage.removeEventListener(MouseEvent.MOUSE_UP, releasePiece); 

      holdingPiece = false; 
      holdingSelectedPiece = false; 

     } 

     public var bodyButton:BodyButton; 
     protected function resetGVHD(event:MouseEvent):void{ 

      numberBodyButtonSelected=0; 

      bodyButton.hideCaption(); 







     } 

回答

1

您正在尋找這樣的事情:

public var holdingPiece:Boolean = false; 
public var holdingSelectedPiece:Boolean = false; 
[Bindable] 
public var numberBodyButtonSelected:Number = 0; 

private var selectedButtons:Array = []; 

protected function pieMouseDownHandler(event:MouseEvent):void 
{ 
    var bodyButton:BodyButton = event.currentTarget as BodyButton; 
    if(bodyButton.selected){ 
     holdingSelectedPiece = true; 
     holdingPiece = false; 
     bodyButton.hideCaption(); 
     if (bodyButton.includedinBody){ 
      numberBodyButtonSelected -= bodyButton.percentageValue; 
     } 
    }else{ 
     holdingSelectedPiece = false; 
     holdingPiece = true; 
     bodyButton.showCaption(); 
     if (bodyButton.includedinBody){ 
      selectedButtons.push(bodyButton); // this might go outside the if (bodyButton.includedinBody) condition 
      numberBodyButtonSelected+= bodyButton.percentageValue; 
     } 
    } 
    stage.addEventListener(MouseEvent.MOUSE_UP, releasePiece); 
} 

protected function pieRollOver(event:MouseEvent):void 
{ 
    var myPie:BodyButton = event.currentTarget as BodyButton; 
    if(holdingPiece){ 
     if(!myPie.selected){ 
      myPie.showCaption(); 
      if (myPie.includedinBody){ 
       selectedButtons.push(bodyButton); // this might go outside the if (myPie.includedinBody) condition 
       numberBodyButtonSelected+= myPie.percentageValue; 
      } 
     } 
    }else if(holdingSelectedPiece){ 
     if(myPie.selected) { 
      myPie.hideCaption(); 
      if (myPie.includedinBody){ 
       numberBodyButtonSelected-= myPie.percentageValue; 
      } 
     } 
    } 
} 

protected function releasePiece(event:MouseEvent):void{ 
    stage.removeEventListener(MouseEvent.MOUSE_UP, releasePiece); 
    holdingPiece = false; 
    holdingSelectedPiece = false; 
} 

protected function resetGVHD(event:MouseEvent):void{ 
    numberBodyButtonSelected=0; 
    for (var i:int = 0; i < selectedButtons.length; i++) { 
     BodyButton(selectedButtons[i]).hideCaption(); 
    } 
    selectedButtons = []; 
} 

現在resetGVHD功能將調用上的所有按鈕,在陣列中hideCaption功能。 ..但我不知道,它會工作,太多的代碼丟失。

+0

這工作完美。非常感謝!真正感激它。 – user1840002

相關問題