我不确定这到底发生了什么,但我要做的是使用flex制作滚动滚动条,当屏幕上有其中一个时,它可以正常工作,但有两个时,奇怪的事发生了。
我设计这个用于实时更新的方式,当我的hbox的孩子离开屏幕时,我删除它并在其末尾添加另一个孩子。这恰好重置了hbox的X位置,这不是太糟糕,但它也会重置我在屏幕上的任何其他hbox的X位置。这是代码,演示了我所看到的内容:
要使用此功能,请运行flex程序,然后在第一个hbox中单击以将其x位置设置为mouseX。当重置第二个hbox(hbox3)的x位置时,第一个hbox(hbox2)X位置也将重置。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application creationComplete="addToBoxes()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" >
<mx:Script>
<![CDATA[
import mx.controls.Button;
private const speed:Number = 1;
private function moveBox3():void{
box3.move(box3.x + speed, box3.y)
if(Math.random() > .99 && box3.numChildren > 0)
box3.removeChildAt(0)
callLater(moveBox3)
}
private function addToBoxes():void{
for(var i:int = 0; i < 8; i++){
var a:Button = new Button;
box2.addChild(a);
a.label = "Box2:" + String(i)
}
for(var j:int = 0; j < 8; j++){
var b:Button = new Button;
box3.addChild(b)
b.label = "Box3: " + String(j)
}
}
]]>
</mx:Script>
<mx:HBox id="box2" width="100%" click="box2.x = mouseX" borderStyle="solid"/>
<mx:HBox id="box3" width="100%" creationComplete="moveBox3()" borderStyle="solid"/>
</mx:Application>
如何防止这种情况发生,或者更新的方式来制作像我正在尝试的更新代码?
答案 0 :(得分:0)
问题仍然存在,但我发现了。为了记录,我最终创建了一个自定义组件来处理内部滚动(画布而不是HBox,所以你可以引用子项,并且当你removeChild它不会跳转)。我只把其中两个放在舞台上,它运作得很好。