flash Tree组件使用经验

Flash的Tree组件使用是非常方便的,按照教程中所说的只需要拖一个组件到场景中,然后把这个组件实例dataProvider属性指向一个XML文挡对象就可以了。当然这个XML的格式是有一定的标准,每一个节点NODE可以有Label、Data两中属性,但实际使用中我们可以根据自己的规则命名更多的属性,节点的名称也可以自定义,Tree组件只是将XML的结构转换成树的结构,将label的值显示为节点的名称。

一个flash版的xml编辑器:
为什么可以用Tree组件制作xml编辑器呢,因为ActionScript中提供了一个非常方便的操作API,他与Tree组件的显示紧密结合做起来简单方便。(当然第一次做的时候查文档调试了半天,毕竟as≠Java|JS。)

System.useCodepage = true;
//防止乱码
myTreeXML = new XML();
//建立一个xml对象
myTreeXML.ignoreWhite = true;
//忽略其中的空格
myTreeXML.load("myxml.xml");
//载入要编辑的xml文件
myTreeXML.onLoad = function(success) {
if (success) {
   myTree.dataProvider = myTreeXML;
   //如果载入成功,为tree组件指定数据源   
} else {
   trace("No success!!");
}
};
//下面仍然是组件的监听
myTreeListener = new Object();
myTreeListener.change = function(tree) {
var xnode=tree.target.selectedItem;
trace(xnode.attributes.data);
};
myTree.addEventListener("change", myTreeListener);

添加三个按钮,分别为{ 增加、删除、更改 }
// 增加
on(click){
_root.myTree.selectedNode.addTreeNode("Label","Data");
_root.myTree.refresh();
}

//删除
on(click)
{
_root.myTree.selectedNode.removeNode();
_root.myTree.dataProvider=_root.myTreeXML; //不从新设置XML会出现奇怪现象
_root.myTree.refresh();
}

//更改
on(click)
{
_root.myTree.selectedNode.attributes.label="新标识";
_root.myTree.selectedNode.attributes.data="新数据";
_root.myTree.refresh();
}

忽略其中的一些交互部分制作,最后实现的效果就是,选中一个节点以后就可以
1 在其子节点中添加一个新的child节点
2 删除该节点与其下属所有节点
3 修改当前节点的显示名称与数据的值
这里的Tree类与TreeDataProvider接口实际上就好象java加载数据库一样,Tree就是驱动连接到具体
的xml(数据库),TreeDataProvider接口使用Tree类的API调用数据,而对Tree实例进行的数据改动将
马上反映到xml对象的实例中去。最后把xml对象写回文件中,就完成实际的同步了。
XML文件了。

<?xml version="1.0" encoding="UTF-8"?>
<root label="分类">
<node label="Flash">
<node label="ActionScript" data="XMLSocket"/>
</node>
<node label="Java">
<node label="J2EE" data="MVC"/>
</node>
<node label="AJAX">
<node label="JavaScript" data="XMLHttpRequest"/>
</node>
</root>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值