加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FlexViewer中widget打开时关闭前一个打开的widget操作(widget的

发布时间:2020-12-15 01:21:04 所属栏目:百科 来源:网络整理
导读:?????? 这两天一直在看FlexViewer的一些东东。FlexViewer的功能很强大,这一点无可厚非。但是对于widget,我们只能是打开之后手动的去关闭。我用了两天的时间(我是个编程菜鸟,花的时间就相对多了些)去实现了排他打开,只要你打开一个新的widget,就会自动

?????? 这两天一直在看FlexViewer的一些东东。FlexViewer的功能很强大,这一点无可厚非。但是对于widget,我们只能是打开之后手动的去关闭。我用了两天的时间(我是个编程菜鸟,花的时间就相对多了些)去实现了排他打开,只要你打开一个新的widget,就会自动关闭前一个打开的widget。实现过程如下:

1、对于widget的一些操作,FlexViewer(2.2)中主要是在widgetmanager中实现的。在widgetmanager的开始部分定义了一个?widgetTable(代码: private var widgetTable:Hashtable = new Hashtable();)。它会把每次你打开的widget都装在里面,但是不重复装。也就是你第二次开的时候,他会先检查widgetTable里面有没有你要打开的widget,如果有的话就把WidgetStates设为open。

2、于是我就想着每次打开一个widget之前,都把widgetTable遍历一遍,然后把WidgetStates设为close。

for(var i:Number=0;i<configData.widgets.length;i++)
//????{
//?????if(widgetTable.find(i)&&i!=id)
//?????{
////??????var widget:IBaseWidget = widgetTable.find(i) as IBaseWidget;
////??????widget.setState(WidgetStates.WIDGET_CLOSED);
//?????}
//????}

3、我运行了一下,欣喜的发现我很聪明,成功了!但是当我点击很多次之后,崩溃。widget会消失,但是widgetContainer并不会消失。哎,因此我纠结了两天啊!

4、今天下午同事帮忙终于解决。当我们打开一个widget的时候,就记住他的id,然后下次打开令一个的时侯,直接关闭上一个打开的widget。

private var closeIndex:Number=0;

??if(closeIndex!=id){
?????var wdg_data:Object=
??????{
???????id:closeIndex,
???????state:WidgetStates.WIDGET_CLOSED
??????};
?????
?????ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_CHANGE_STATE,wdg_data));
?????
?????closeIndex = id;
????}

5、但是我不明白原来的为什么不行,性能问题吗?还是其他的原因?希望朋友给我提些建议。谁有flexViewer经验的希望分享啊!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读