我正在使用flex-4-tree(https://github.com/wasbridge/flex-4-tree) 在手机AIR app。
树克拉斯:
public class Tree extends List
{
...
dataSource.addEventListener(TreeEvent.NODE_EXPANDED, nodeExpandedHandler);
dataSource.addEventListener(TreeEvent.NODE_COLLAPSED, nodeCollapsedHandler);
...
}
应用程序的主屏幕上有一个菜单。 如果用户选择菜单项,则采取适当的操作, 但是如果用户通过选择扩展器图标来扩展/折叠菜单项, 菜单项已展开/折叠。
目前收到列表更改事件 flex-4-tree展开/折叠事件。
我之前需要接收flex-4-tree展开/折叠事件 列表更改事件。
非常感谢任何帮助。
答案 0 :(得分:0)
在处理程序中为ListChangeEvent设置一个计时器,该计时器将任何操作推迟到十分之一秒。然后,如果您在计时器结束之前进行扩展/合同事件,则可以取消更改事件的操作。像这样:
private var _expandEventOccurred:Boolean = false;
private function handleListChange(evt:Event):void {
var timer:Timer = new Timer(100,1); //100ms = 0.1s
timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleListChangeTimerEvent);
timer.start();
}
private function handleExpandContract(evt:Event):void {
_expandEventOccured = true;
//perform whatever other actions you need for the expand/contract event
}
private function handleListChangeTimerEvent(evt:Event):void {
if(_expandEventOccured) {
_expandEventOccured = false;
return;
}
_expandEventOccured = false; //needed here as well
//perform whatever other actions you need for the list change event
}
这不是世界上最干净的东西,但应该做到这一点。希望有所帮助!