"Type Coercion failed" 将字符串传递给 AS3 中的函数时

"Type Coercion failed" when passing String to function in AS3

我是这样读txt文件的:

private function ReadFile():void
    {
        var loadedPage:String;
        var url:URLRequest = new URLRequest("file.txt");
        var loader:URLLoader = new URLLoader();
        loader.load(url);
        loader.addEventListener(Event.COMPLETE, loaderComplete);
        function loaderComplete(e:Event):void
        {
            loadedPage = loader.data;
            //if i trace loadedPage here it works great
            reader(loadedPage);
        }
    }

reader class 在单独的文件中,看起来像:

public class reader
{
    var pageContent:String;

    public function reader(loadedPage:String):void
    {
        pageContent = loadedPage;
        read();
    }

    private function read():void
    {
        trace(pageContent);
    }
}

但是我得到一个错误:

[Fault] exception, information=TypeError: Error #1034: Type Coercion failed: cannot convert "Lorem ipsum dolor sit amet, consectetur adipiscing elit

这是 file.txt 第一行包含的内容。

为什么会出现此错误?我不尝试转换,我只是想将 Sting 传递给函数。

您收到该错误是因为您正试图将 cast(类型转换)一个 String 到您的 reader 对象。

为了避免这种情况,您可以:

  • 使用您的 reader class 的实例。在这里我要告诉你 class 名字总是以大写字母开头:Reader 而不是 reader。有关更多信息,请查看 here

所以对于这种情况,你可以这样做(这只是一个例子,我不明白你为什么需要这个):

var reader:Reader;

// ...

function loaderComplete(e:Event):void
{
    loadedPage = loader.data;
    reader = new Reader(loadedPage);
}
  • 使用 static 函数,例如 read(),像这样:
public class Reader 
{
    // ...

    public static function read(loadedPage:String):void
    {
        trace(loadedPage);
    }
}

然后你可以这样写:

function loaderComplete(e:Event):void
{
    loadedPage = loader.data;
    Reader.read(loadedPage);
}

希望能帮到你。