我有一个转发器,可以创建一个名为“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”。然后我删除了画布标签,转发器运行了正确的次数。
有人能帮帮我吗?
答案 0 :(得分: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;
答案 1 :(得分:0)
以下是我如何解决它...因为每次创建一个块时都会声明变量名“thisBlock”,所有这些信息都会存储在一个数组中。在学习了这个之后,我能够在按下显示/隐藏按钮时调用的函数中为每个循环创建一个...对于每个循环都是这样的:
for (var I:int = 0; i < dataprovidername.length; i++)
thisBlock[i].visible = true/flase;
希望将来可以帮助其他人。