我目前所处的情况是我无法在我的FlashDevelop项目中加载和显示外部swf文件。我通常可以毫无问题地执行此操作,但此处存在问题,因为其他人编码了正在加载每个类的文件,包括加载swf的每个类。
以下是加载类的主类中的相关代码:(我没有写这个。)
_types = new Vector.<Class>();
_labels = new Vector.<String>();
_types.push(Game1, Game2, Game3, Game4, Game5);
_labels.push("Game1", "Game2", "Game3", "Game4", "Game5");
...然后会有一些按钮被添加到屏幕上,引导您进入其中一个游戏。单击按钮时,将调用此函数:
private function menuSelect(evt:MouseEvent):void
{
if (gameDo[evt.target.name]<2){
gameDo[evt.target.name] ++;
cycle++;
}
_nextQuest = _types[evt.target.name];
}
我打电话的游戏是Game5。加载此类时,它会尝试加载具有实际游戏内容的外部swf文件。这是班级:
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
/**
* ...
* @author
*/
public class Game5 extends Sprite implements LoaderMod
{
private var _loader:Loader;
public function Game5():void
{
_loader = new Loader();
_loader.load(new URLRequest("Game5.swf"));
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
}
public function loader_complete(evt:Event):void
{
var _loadedData:MovieClip = new MovieClip();
_loadedData.addChild(evt.currentTarget.content);
this.addChild(_loadedData);
}
}
当我运行此代码时,这些是我得到的错误:
[Fault] exception, information=TypeError: Error #1034: Type Coercion failed: cannot
convert Game5@855b0a1 to Quest.
Fault, onEnterFrame() at Main.as:76
[Fault] exception, information=ArgumentError: Error #2025: The supplied DisplayObject
must be a child of the caller.
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
[Fault] exception, information=ArgumentError: Error #2025: The supplied DisplayObject
must be a child of the caller.
[Fault] exception, information=ArgumentError: Error #2025: The supplied DisplayObject
must be a child of the caller.
随着游戏的运行,错误中的最后四行会继续生成。至于错误的前两行,它表示“无法将Game5 @ 855b0a1转换为Quest”,项目中有另一个名为Quest.as的类,它被其他类扩展为某种超类。我写的唯一代码是这里的Game5.as类。
感谢所有帮助。谢谢!
EDIT!
这是onEnterFrame()函数,其中第76行错误发生在:
70 protected function onEnterFrame(evt:Event):void
71 {
72 if (_nextQuest)
73 {
74 removeChild(mainMenu);
75 removeChild(_menu);
76 _quest = new _nextQuest();
77 addChild(_quest);
78 _nextQuest = null;
79 }
80 if (_quest)
81 {
82 if (! _quest.update())
83 {
84 removeChild(_quest);
85 _quest = null;
86 questions.questions();
87 this.addChild(questions);
88 }
89 }
90 }
答案 0 :(得分:0)
_nextQuest输入为Quest吗?如果是这样,当_nextQuest被指定为Game5时,由于Game5不是从Quest扩展而是从Sprite扩展,因此您会收到第一个错误。您可以通过将_nextQuest的类型更改为Sprite来解决此问题。我不确定Quest.as的扩展或做什么,所以我无法就此提出任何建议。
至于其他错误,你是否给出了它们出现的一条线?这可能有助于找到确切的问题,但看起来“removeChild()”正在调用尚未添加的内容。那是我最常收到的错误。
编辑:看起来您找不到加载文件的URL。检查以确保它与swf相关,它不在任何目录或更高级别。