问题描述
|
我注意到,启用liveDragging时,“开箱即用” hdividedBox会出现一些严重的闪烁问题,但仅当拖动时指针位于DividedBox的内容上时才如此。如果在拖动时抓住BoxDivider并将指针移离组件,则闪烁消失,组件将正确渲染。
我已经使用我的自定义组件和极其基本的hdividedBox实现(使用Group,SkinnableContainer和BoxContainer子代以及带有剪切的嵌套组)对它进行了测试。所有类型的儿童都表现出相同的行为。如果有人对此有解决方法,我将不胜感激!
非常感谢,这是显示我的问题的代码段。
<mx:hdividedBox width=\"500\" height=\"200\" liveDragging=\"true\">
<s:SkinnableContainer minWidth=\"0\" backgroundColor=\"green\" percentHeight=\"100\"/>
<s:SkinnableContainer minWidth=\"0\" backgroundColor=\"blue\" percentHeight=\"100\"/>
<s:SkinnableContainer minWidth=\"0\" backgroundColor=\"yellow\" percentHeight=\"100\"/>
<s:SkinnableContainer minWidth=\"0\" backgroundColor=\"red\" percentHeight=\"100\"/>
</mx:hdividedBox>
谢谢,
亚伦
解决方法
拉开分隔线并查看该示例的表现很有趣,但我没有遇到任何闪烁的问题。可能的解释:
处理器速度-我运行的是快速处理器,其他一些处理器可能无法满足所需的重画次数。您可能还会使用比纯色更难绘制的更复杂的组件。
鼠标事件可能在您使用的组件中多次被调度/处理。
偶尔移动杠时,我确实遇到了一些分隔线“抽搐”。这很可能是由于每当分隔线仅移动一个像素时,就需要根据百分比计算每个分隔框的正确宽度所必需的多次布局计算。
编辑:运行此命令并移动分隔线以了解由于使用livedragging:而发生了多少次调整大小/重绘。
<fx:Declarations>
<fx:int id = \"resizeCount\">0</fx:int>
</fx:Declarations>
<mx:HDividedBox
width = \"500\" height = \"200\"
liveDragging = \"true\">
<s:SkinnableContainer
minWidth = \"0\"
percentHeight = \"100\"
backgroundColor = \"green\"
resize = \"{trace(resizeCount);resizeCount++}\" />
<s:SkinnableContainer
minWidth = \"0\"
percentHeight = \"100\"
backgroundColor = \"blue\"
resize = \"{trace(resizeCount);resizeCount++}\" />
<s:SkinnableContainer
minWidth = \"0\"
percentHeight = \"100\"
backgroundColor = \"yellow\"
resize = \"{trace(resizeCount);resizeCount++}\" />
<s:SkinnableContainer
minWidth = \"0\"
percentHeight = \"100\"
backgroundColor = \"red\"
resize = \"{trace(resizeCount);resizeCount++}\" />
</mx:HDividedBox>
它迅速进入数百...然后数千...