2014-03-31 67 views
0
package { 

import Scripts.Grid 

public class Pathfinding { 

    private var $xmlLoader:URLLoader = new URLLoader(); 
    $xmlLoader.addEventListener(Event.COMPLETE, loadXML); 
    $xmlLoader.load(new URLRequest("grid.xml")); 
    public static var DepStation:String = new String; 
    public static var ArrStation:String = new String; 

    public function Pathfinding() { 
     // constructor code 
    } 
    public function loadXML(e:Event):void 
    { 
     var $xml:XML = new XML(e.target.data); 

     var $grid:Grid = new Grid(); 
     $grid.parseXML($xml); 
     trace($grid.findPath(DepStation, ArrStation)); 
    } 

} 

}AS3 XML加載腳本

嗨,我在這裏的問題是,Flash將輸出一個錯誤

第16行1046:類型未找到或不是編譯時常:事件。

,當我試圖導入對象類型:flash.events.Event,這些錯誤會爆炸,產生

9號線1120:未定義的屬性$ xmlLoader的訪問。

第9行1120:訪問未定義的屬性loadXML。

第10行1120:訪問未定義的屬性$ xmlLoader。

第10行1180:調用一個可能未定義的方法URLRequest。

第8行1046:類型未找到或不是編譯時常量:URLLoader。

第8行1180:調用一個可能未定義的方法URLLoader。

第8行1180:調用一個可能未定義的方法URLLoader。

所以我真的在我的智慧的結尾,腳本的來源是http://lassieadventurestudio.wordpress.com/2008/12/09/a-star-pathfinding/ 它以前工作,如果我複製它1:1,但現在即使1:1克隆不工作,適應外部動作腳本不起作用。

很多幫助表示讚賞

+0

首先,您缺少一些[imports](http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/packages.html#articlecontentAdobe_numberedheader_0),例如'import flash.events。 *'。除了僅用於方法的變量聲明(使用初始化)之外,您不能在類級別編寫代碼。 – Cameron

回答

1

這是它應該如何工作

package { 

import Scripts.Grid; 
import flash.events.Event; 

public class Pathfinding { 

private var $xmlLoader:URLLoader; 
public static var DepStation:String = new String(); 
public static var ArrStation:String = new String(); 

public function Pathfinding() { 
    // constructor code 
    $xmlLoader = new URLLoader(); 
    $xmlLoader.addEventListener(Event.COMPLETE, loadXML); 
    $xmlLoader.load(new URLRequest("grid.xml")); 
} 
public function loadXML(e:Event):void 
{ 
    var $xml:XML = new XML(e.target.data); 

    var $grid:Grid = new Grid(); 
    $grid.parseXML($xml); 
    trace($grid.findPath(DepStation, ArrStation)); 
} 

}

所以,你有一對夫婦的問題,

1)如果你創建了一個String對象通過做「new String()」,你需要包含(),就像你創建的其他對象一樣。

2)你需要輸入你要使用的東西,即事件類從閃存

3)不能使用在類級別,這意味着像「的addEventListener方法(methods或相似。 ..)「或」load(...)「應該在構造函數中,或者在另一個方法中。

爲什麼他們在教程中這樣寫呢?你可能會問。那麼,在教程中,這個人明確地說將這段代碼放到你的時間線上(在Flash PRO中)。時間軸編碼和麪向對象編碼在編寫它們的方式上有很大不同。

+0

感謝您的幫助!還有flash.net.URLLoader和flash.net.URLRequest的導入語句。非常感謝您的幫助! – josh

+0

@Josh - 你可以通過接受和/或upvoting正確的答案來顯示你的感激之情。 –