"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);
}
希望能帮到你。
我是这样读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);
}
希望能帮到你。