[英]problem with actionscript 3 and xml
我無意間偶然發現了一個無法使用php的項目使用Flash,不幸的是我到了需要編輯一些動作腳本的地步,這超出了我的范圍。
xml看起來像這樣(我知道這很愚蠢,但是已經綁定到了一些php解析函數中,這些函數很可能會被重寫!)
<project>
<project_1>
<name>Place name</name>
<other>sample</other>
</project_1>
<project_2>
<name>Place name</name>
<other>paragraph of text</other>
</project_2>
</project>
我正在嘗試從Flash xml編輯器2編輯接口,下面是相關代碼。 我需要在節點名稱之后添加名稱文本,因此它將在編輯器的相關選項卡上讀取project_2地名。 我嘗試的編輯已被評論。 任何幫助將不勝感激!
湯姆
public class ClassicXMLNode extends MovieClip implements IEventDispatcher{
public var XMLData:XML;
public var isRoot:Boolean = false;
public var num:Number;
public var nodeName:String;
public var nodePath:String; // This will track the path throughout the XML document
public var childrenNodes:XMLList;
public var numNodes:uint;
public var childHolder:MovieClip;
public var isOpen:Boolean = false; // Tracks whether the nodes data is opened or closed
public static var moveDistance:Number; // This will be used for recursive loops : opening and closing sections
public function ClassicXMLNode(Data:XML, nodeNum:Number, xmlPath:String = null) {
XMLData = Data;
num = nodeNum;
xmlPath ? nodePath = xmlPath : nodePath = "";
nodeName = XMLData.name();
nodePath += "." + nodeName;
//trace(nodePath);
addEventListener(Event.ADDED_TO_STAGE, addedListener);
}
public function addedListener(e:Event):void {
//I added the var project
var project:String = XMLData.project*.name.text();
//Load the XMLData
//and tried to concatenate it here
nodeName_txt.text = XMLData.name + project();
childrenNodes = XMLData.children();
numNodes = childrenNodes.length();
//Create the holder for childNodes
childHolder = new MovieClip();
childHolder.y = ClassicTree.nodeSpacing;
childHolder.x = 50;
addChild(childHolder);
// Event Listeners
openButton.buttonMode = true;
openButton.tabEnabled = false;
openButton.addEventListener(MouseEvent.CLICK, _click);
numNodes == 0 ? openButton.visible = false : null;
this.addEventListener(MouseEvent.MOUSE_OVER, hideActionMenu);
this.addEventListener(MouseEvent.MOUSE_OUT, hideActionMenu);
hideActionMenu();
moveButtonCheck();
}
我不確定這是否有幫助,但對我而言; 我通常喜歡將XML轉換為DataProvider(因為我幾乎總是在將DataProviders用作內容的某些組件中使用它)。
import fl.data.DataProvider;
function xmlParse(data:XML):DataProvider {
var dp:DataProvider;
var i:uint;
var obj:Object;
var node:XML;
dp = new DataProvider();
for (i = 0; i < data.children().length(); i++) {
node = data.children()[i];
obj = {
branch: node.name(),
name: node.name.text(),
other: node.other.text()
}
dp.addItem(obj);
}
return dp;
}
var mydp:DataProvider = xmlParse(xml);
var item:Object = mydp.getItemAt(0);
for (var prop:String in item) { trace(prop, '->', item[prop]); }
我現在已經知道了,我刪除了添加的變量並編輯了這一行
nodeName_txt.text = XMLData.name() + XMLData.name.text()
它獲取節點名稱,如果有子節點“名稱”,則會添加該子節點的文本。 感謝所有看過camdagr8的人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.