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 个名称。