1120: 访问未定义的 属性 阶段
1120: Access of undefined property stage
我正在尝试制作 class 但是我收到了这些错误:
... \SubtitleLoader.as, Line 14, Column 8 1120: Access of undefined
property stage. ... \SubtitleLoader.as, Line 20, Column 10 1061: Call
to a possibly undefined method addEventListener through a reference
with static type SubtitleLoader.
这是我的代码:
package
{
import flash.events.*;
import flash.display.Stage;
import flash.net.URLRequest;
import flash.net.URLLoader;
public class SubtitleLoader
{
private var str:String;
public function init():void
{
if (stage)
{
LoadText();
}
else
{
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
}
private function onAddedToStage(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
LoadText();
}
private function LoadText():void
{
var url:URLRequest = new URLRequest("aman.srt");
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(url);
urlLoader.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(event:Event):void
{
trace(event.data);
}
}
}
我该如何解决这个问题。
您无法添加事件,因为您的 class 没有扩展 EventDispatcher。您的 class 无法添加到舞台,因为它没有扩展任何显示 classes。您可能想要扩展 flash.display.Sprite
(这也扩展了 EventDispatcher):
package
{
import flash.events.*;
import flash.display.Sprite; //import sprite
import flash.display.Stage;
import flash.net.URLRequest;
import flash.net.URLLoader;
public class SubtitleLoader extends Sprite //extend sprite, inheriting EventDispatcher as well
{
此外,将函数名称命名为 UpperCamelCase (LoadText) 是一种糟糕的编码风格。 UpperCamelCase 保留用于 class 个名称。
我正在尝试制作 class 但是我收到了这些错误:
... \SubtitleLoader.as, Line 14, Column 8 1120: Access of undefined property stage. ... \SubtitleLoader.as, Line 20, Column 10 1061: Call to a possibly undefined method addEventListener through a reference with static type SubtitleLoader.
这是我的代码:
package
{
import flash.events.*;
import flash.display.Stage;
import flash.net.URLRequest;
import flash.net.URLLoader;
public class SubtitleLoader
{
private var str:String;
public function init():void
{
if (stage)
{
LoadText();
}
else
{
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
}
private function onAddedToStage(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
LoadText();
}
private function LoadText():void
{
var url:URLRequest = new URLRequest("aman.srt");
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(url);
urlLoader.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(event:Event):void
{
trace(event.data);
}
}
}
我该如何解决这个问题。
您无法添加事件,因为您的 class 没有扩展 EventDispatcher。您的 class 无法添加到舞台,因为它没有扩展任何显示 classes。您可能想要扩展 flash.display.Sprite
(这也扩展了 EventDispatcher):
package
{
import flash.events.*;
import flash.display.Sprite; //import sprite
import flash.display.Stage;
import flash.net.URLRequest;
import flash.net.URLLoader;
public class SubtitleLoader extends Sprite //extend sprite, inheriting EventDispatcher as well
{
此外,将函数名称命名为 UpperCamelCase (LoadText) 是一种糟糕的编码风格。 UpperCamelCase 保留用于 class 个名称。