2009-09-07 65 views
0

我想在一個處理讀取和解析/管理一個XML文件的動作文件中做一個簡單的類。該類將一個影片剪輯作爲參數,並使影片剪輯根據導入的結果進行操作。我已經試過這樣:爲什麼我的XML文件閱讀器類不工作?

class FileReader { 
    var menu:MovieClip; 
    function FileReader(newMenu) { 
     menu = newMenu; 
    } 
    //Load the specified xml file 
    function loadFile(fileName) { 
     menu.gotoAndStop("loading"); 
     var name = levelName+".xml"; 
     var xmlFile = new XML(); 
     xmlFile.ignoreWhite = true; 
     xmlFile.load(name); 
     xmlFile.onLoad = function() { 
      //Parse Input 
      menu.gotoAndStop("loaded"); 
     }; 
    } 
} 

出於某種原因,當代碼到達的onLoad功能,文件加載正確的,但應用程序的菜單影片剪輯的存在,沒有更多的知識。如果我試圖追蹤菜單的任何屬性,它說它是未定義的。於是我嘗試這樣做:

class FileReader { 
    var menu:MovieClip; 
    var xmlFile:XML; 
    function FileReader(newMenu) { 
     menu = newMenu; 
    } 
    //Load the specified xml file 
    function loadFile(fileName) { 
     menu.gotoAndStop("loading"); 
     var name = fileName+".xml"; 
     xmlFile = new XML(); 
     xmlFile.ignoreWhite = true; 
     xmlFile.load(name); 
     xmlFile.onLoad = function() { 
      //Parse Input 
      menu.gotoAndStop("loaded"); 
     }; 
    } 
} 

在這種情況下,XML文件將根本無法加載,並且XMLFILE對象是不確定的。這裏發生了什麼,爲什麼這兩種方法都不起作用?

回答

0

這是一種愚蠢的,但我終於找到了一種方法,使這項工作:

class FileReader { 
    var menu:MovieClip; 
    function FileReader(newMenu) { 
     menu = newMenu; 
    } 
    //Load the specified xml file 
    function loadFile(fileName) { 
     menu.gotoAndStop("loading"); 
     var newMenu:MovieClip = menu; //Make a refernce to menu here 
     var name = levelName+".xml"; 
     var xmlFile = new XML(); 
     xmlFile.ignoreWhite = true; 
     xmlFile.load(name); 
     xmlFile.onLoad = function() { 
       //Parse Input 
       newMenu.gotoAndStop("loaded"); //Call the refence rather than the actual object 
     }; 
    } 
} 

通過使一個新的參考菜單,在onLoad函數可以使用這個參考去跟實際的菜單影片剪輯。我猜這是有效的。

0

通過使用第一種方法,我發現我可以簡單地將影片剪輯作爲參數傳遞。該功能然後會識別影片剪輯並按預期正確執行。仍然困惑,爲什麼沒有參數傳遞它不會工作。

編輯: 我想這實際上沒有工作,因爲我曾想過。我仍在嘗試!有其他想法的人?