AS3 XML加载器脚本

时间:2014-03-31 02:43:29

标签: xml actionscript-3

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));
    }

}

}

嗨,我的问题是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的克隆也无法正常工作,并且对外部动作脚本的调整也无法正常工作。

很感激帮助

1 个答案:

答案 0 :(得分: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)如果你通过做" new String()"来创建一个String对象。你需要包含(),就像你创建的每个其他对象一样。

2)你需要导入你将要使用的所有东西,即flash中的Event类

3)你不能在类级别上使用方法或类似方法,这意味着像" addEventListener(...)"或者"加载(...)"应该在构造函数中,或者在另一个方法中。

为什么他们会在教程中编写它,你可能会问。好吧,在教程中,该人明确表示将此代码放在您的时间轴中(在Flash PRO中,即)。时间线编码和面向对象编码在编写时非常不同。