1.首先将几个页面放在同一个viewStack(id="pageViewStack")中,A页面要跳转到B页面;
2.在A页面初始化函数中,v = this.parent as ViewStack;//获取父窗体ViewStack对象,然后通过v.selectedChild = Container(v.getChildByName("B"));//通过ViewStack下的组件id查找该组件,然后跳转到该组件B页面去;
3.同时要将树菜单相应选中到B页面,可以设定方法:
(1)在主应用程序(default.xmxl)中定义静态变量
[Bindable]
private static var treeJump:Tree;
private static var menusJump:XML;
private static var pageViewStackJump:ViewStack;
(2)在主应用程序(default.xmxl)的初始化函数中给上面变量赋值
//赋值给静态变量供静态函数forceJump使用
treeJump=tree;
menusJump=menus;
pageViewStackJump=pageViewStack;
(3)定义树菜单跳转函数forceJump,参数id为要跳转页面的名称,和菜单中定义的名称要保持一致
//跳转到子节点页面
public static function forceJump(id:String):void {
treeJump.expandChildrenOf(menusJump , true);//展开树节点
var metaTreeData:XMLListCollection =treeJump.dataProvider as XMLListCollection;//树菜单数据源,xml文件
trace(metaTreeData.source);
// trace(metaTreeData.descendants("menu"));
var treeNodes:XMLList = metaTreeData.descendants("menu");//menu为节点名称
trace(treeNodes);
for each(var treeNode:XML in treeNodes){
if(treeNode.@url.toString() == id){
treeJump.selectedItem = treeNode;
treeJump.firstVisibleItem = treeNode;
pageViewStackJump.selectedChild = Container(pageViewStackJump.getChildByName(id));
break;
}
}
}