对不起,这可能是一个有点愚蠢的问题,但我正在尝试编写一个 Actionscript 2.0 类来处理加载 XML 数据,然后使其可供应用程序的其余部分访问。
然而,这是我第一次为任何不是 MovieClip 的东西编写类定义,我遇到了一个奇怪的错误。例如这里:
class Main extends SEBanner {
public function Main() {
_root._quality = 'BEST';
trace(_root._quality + ' SWF Quality Setting.');
trace('Banner main object instantiated. Ready to run.')
trace('Width of banner: ' + bannerWidth());
trace('Height of banner: ' + bannerHeight());
trace('Banner aspect ratio: ' + bannerAspectRatio());
trace('----------------------------------------------');
}
public var externals:External = new External();
}
最后一行,我尝试实例化 External 类(之所以这样命名,是因为它将处理外部提供的 Flash 变量以及 XML),正在被编译器挂钩,它给了我一个错误,转换为(我是在日语版本的 Flash 上)“类实例变量只能在编译时实例化。”
我很困惑,因为据我所知,如果代码正在编译,它就是编译时间。这段代码应该没问题,因为我编译它时出现了错误。
奇怪的。
谢谢!
党卫军
更新:这是(剥离,以避免显示任何机密信息)外部类进行比较:
import mx.xpath.XPathAPI;
class External {
private var _rawXML = new XML();
private var _xmlLocation:String = '';
public function External() {
trace('Loading external information...');
_rawXML.ignoreWhite = true;
_rawXML.onLoad = function(success:Boolean) {
if (success) {
trace('XML data was successfully loaded.')
initXML();
} else {
trace('There was an error loading the XML. Please check the XML file.');
}
}
preLoadXML();
}
private function loadLocalXML():Void {
getXML();
}
private function loadNetworkXML():Void {
getXML();
}
function getXML():Void {
if ( _rawXML.load( _xmlLocation ) ) {
trace('XML loading...');
} else {
trace('I\'m having difficulty finding the XML. You might want to check your data source.')
}
}
function initXML():Void {
_root._ary = XPathAPI.selectNodeList(this.rawXML, eventPath);
_root._total = _ary.length;
_root.siteLink = getXRedirect();
}
}