2010-06-22 3 views
1

Я случайно наткнулся на использование флэш-памяти для проекта, где php не был вариантом, к сожалению, я пришел к тому моменту, когда мне нужно отредактировать небольшой ActionScript, и это вне меня.проблема с actionscript 3 и xml

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, ниже - соответствующий код. Мне нужно указать текст имени после имени узла, чтобы он читал имя_проекта_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(); 
    } 

ответ

0

Я не уверен, если это поможет, но для меня; Обычно мне нравится преобразовывать свой 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]); } 
+0

классный, спасибо, выглядит как лучший способ делать вещи. К сожалению, я редактирую часть более крупного приложения, так что он не совсем завязывается. Я вот сейчас понял, хотя, см. Ниже ... :) – Tom

0

Я только про понял это теперь, я опустил добавленный ВАР и редактируюсь этой строка

nodeName_txt.text = XMLData.name() + XMLData.name.text() 

который получает имя узла и, если он имеет «имя» ребенок будет добавить, что детский текст. Спасибо всем, кто посмотрел и кулач8!

Смежные вопросы