0

「Block」という名前のカスタム コンポーネントを作成するリピーターがあります。ユーザーがボタンをクリックすると、リピーターによって作成されたすべてのブロックの可視フィールドが false に設定されるようにする必要があります (ボタンが再度クリックされると true になります)。

これが私が今持っているコードの一部です:

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

ブロックを表示/非表示にするためにユーザーがクリックするボタンは次のとおりです。

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

関数 showProjectSwitch() は次のとおりです。

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" を設定してみましたが、うまくいきませんでした:(

また、リピーターの周りにキャンバスをラップしようとしましたが、それを行ったとき... startingIndex="0" と count="16" があるにもかかわらず、リピーターは 1 回しか実行されませんでした。次に、キャンバス タグを削除すると、リピーターが正しい回数実行されました。

誰でも私を助けることができますか?

4

2 に答える 2

0

これが私がそれを解決した方法です...「thisBlock」の変数名はブロックが作成されるたびに宣言されるため、そのすべての情報は配列に格納されます。これを学んだ後、表示/非表示ボタンが押されたときに呼び出される関数で for each ループを作成することができました... for each ループは次のようになります。

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

将来、他の誰かを助けることができることを願っています。

于 2011-04-29T19:45:16.553 に答える
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;
于 2011-04-27T20:25:03.737 に答える