userName11userName22
论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

CS3编辑器里一个关于操作XML的Bug(及解决方法)

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:49:56


var userInfo:XML =
<xmlRoot>
    <userItem id="1">
        <user>userName1</user>
        <age>1</age>
    </userItem>
    <userItem id="2">
        <user>userName2</user>
        <age>2</age>
    </userItem>
    <userItem id="3">
        <user>userName3</user>
        <age>3</age>
    </userItem>
</xmlRoot>;

AS3.0里面,在对xml 操作时,有插入新节点这个方法:insertChildBefore() ;
使用方法为:

userInfo.insertChildBefore(userInfo.userItem.(@id=="2"),userItem_new); //在<userItem id="2">节点前新加一个 <userItem_new> 节点.

但:
   <userItem id="2">
        <user>userName2</user>

       可是如果我想在此处加那个新节点<userItem_new>
        <age>2</age>
    </userItem>


就应该这样写(按道理这样写是没错的):

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

的确,这样写是没错的。测试是成功的!但:一旦我按了那个 “自动套用格式” 的按钮,上面那行代码会变成:

userInfo.userItem.@id == "2".insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new1);

正确的应为:

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

使得测试时显示错误了。这就是在Flash CS3 出现的bug .

解决方法:

遗憾啊.....居然有这个 bug ....不过有解决方法的:

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

把以上这句分解为:

var xmlNode:*=userInfo.userItem.(@id=="2");// 注意 xmlNode 的类型是: * , 即任意类型.因为本人试过其它所以类型了, 编译是错误的.只能用这个类型.
xmlNode.insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

这样就可以解决了....
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程