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的克隆也无法正常工作,并且对外部动作脚本的调整也无法正常工作。
很感激帮助
答案 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中,即)。时间线编码和面向对象编码在编写时非常不同。