2011-04-27 2 views
0

"블록"이라는 사용자 지정 구성 요소를 만드는 중계기가 있습니다. 나는 사용자가 버튼을 클릭 할 때 중계기에 의해 생성 된 모든 블록이 보이지 않는 필드를 false (그리고 버튼을 다시 클릭 할 때 true)로 설정해야한다.플렉스 3 : 중계 장치에서 생성 된 숨기기 요소

다음 코드 중 일부는 내가 지금 가지고있다 : 여기

<mx:Button id="showHideButton" label="Show Project" x="{addBlock.x + addBlock.width + 2}" click="showProjectSwitch();" /> 

는 함수 showProjectSwitch()이다 :

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0"> 
     <components:block height="24" 
      width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off" 
      oneDay="{oneDay}" 
     /> 
    </mx:Repeater> 

여기에 사용자가/표시하려면 클릭합니다 버튼의이 블록을 숨길

public function showProjectSwitch():void { 
      if (showHideButton.label == "Hide Project") 
      { 
       showHideButton.label = "Show Project"; 
       indPositions.visible = false; 
       thisProject.height = 65; 
      } 
      else 
      { 
       showHideButton.label = "Hide Project"; 
       indPositions.visible = true; 
       thisProject.height = projectHeight ; 
      } 
     } 

projectRP.visible = "true/false"로 설정하려고했으나 작동하지 않았습니다. (

리피터 주위에 캔버스를 감싸는 것도 시도했지만, 그랬을 때 ... repeater는 startingIndex = "0"및 count = "16"이라는 사실에도 불구하고 한 번만 실행되었습니다. 그런 다음 캔버스 태그를 제거하고 리피터가 올바른 횟수만큼 실행되었습니다.

나를 도울 수있는 사람은 누구입니까?

답변

0

원하는 것을 얻는 가장 쉬운 방법은 "oneDay"값과 마찬가지로 데이터 바인딩을 사용하는 것입니다.

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0"> 
    <components:block height="24" 
     width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off" 
     oneDay="{oneDay}" 
     visible="{showBlocks}" 
    /> 
</mx:Repeater> 
<mx:Boolean id="showBlocks" /> 

[추가 설명을위한 편집] 하면, showBlocks의 값을 설정과 같이 할 필요가 블록의 가시성을 변경하려면 :

showBlocks = true; 

또는

showBlocks = false; 
+0

조금 설명해 주시겠습니까? 은 구성 요소 유형이 아니어도 블록의 표시 상태가 어떻게 변경되는지 이해할 수 없습니다. – Brds

+0

은 Actionscript에서 Boolean 변수를 선언하는 것과 동일하므로 true 또는 false로 지정할 수 있습니다. 각 블록은 visible = "{showBlocks}"속성을 추가하여이 변수에 데이터 바인딩됩니다. "showBlocks"에 true 값을 할당 할 때마다 모든 블록이 "visible"속성을 true로 설정합니다. –

0

다음은 어떻게 해결 되었습니까? "thisBlock"의 변수 이름이 블록이 만들어 질 때마다 선언되므로 모든 정보가 a 블록에 저장됩니다. rray.

for (var I:int = 0; i < dataprovidername.length; i++) 
    thisBlock[i].visible = true/flase; 

희망 도움이 될 수 있습니다 :이 학습 후, 나는 각 루프에 대한이 같은 간다 ... 표시/숨기기 버튼을 누를 때 호출 된 함수의 각 루프를 만들 수 있었다 미래에 다른 사람.