我正在使用 Flash/actionscript 开发游戏,特别是在某些事情上遇到了一些麻烦。我在闪存方面的知识确实有限,所以这可能对我没有多大帮助,但无论如何。在我的游戏中,我有一个帮助按钮。如果单击此按钮,则会弹出一个屏幕,显示如何为播放器执行操作的说明。指令分为多个 SWF 文件,因此每次单击此按钮时,都会将其中一个外部 SWF 文件加载到游戏中以供使用。
我可以很好地完成这部分,但是如果玩家进一步进入游戏并单击帮助按钮,则会显示帮助以及之前显示的每个帮助文件。
显然我不希望这种情况发生,我尝试了很多事情都没有成功。
任何建议都非常感谢。
编辑:这是我用来加载帮助文件的代码。
private function prepHelp(title:String):void
{
// introduction help files
switch(title) {
case "Welcome to Game Module 1": gameUI.singleton.loadHelp("Help/game_module1.swf"); break;
case "Welcome to Game Module 2": gameUI.singleton.loadHelp("Help/game_module2.swf"); break;
case "Welcome to Game Module 3": gameUI.singleton.loadHelp("Help/game_module3.swf"); break;
}
}
这些在 gameUI 类中调用我的 loadHelp() 函数:
public function loadHelp(file_name:String):void
{
helpBtn.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void {
_helpObject.loadHelp(file_name);
singleton.addChild(_helpObject);
_helpObject.dispatchEvent(new Event("getHelp"));
}
);
}
因此,帮助 SWF 正在与我的 helpView.as 类中的 _helpObject 对象一起加载:
public class helpView extends Sprite
{
// variables associated with loading help content
private var _helpLoader:Loader;
private var _loader:Loader;
private var _helpRequest:URLRequest;
private var _helpMc:MovieClip = new MovieClip();
private var _exitButton:Sprite = new Sprite();
public function helpView():void {}
public function loadHelp(help_file:String):void
{
_helpRequest = new URLRequest("swf/help_files/"+help_file);
initialize();
addEventListener("getHelp", getHelp);
}
private function initialize():void
{
_exitButton.graphics.lineStyle(1, 0x000000, 1);
_exitButton.graphics.beginFill(0xffffff);
_exitButton.graphics.drawRect(0, 0, 75, 25);
_exitButton.graphics.endFill();
_exitButton.buttonMode = true;
_exitButton.alpha = 1;
_exitButton.x = gameUI.singleton.stage.stageWidth - 210;
_exitButton.y = gameUI.singleton.stage.stageHeight - 55;
_exitButton.addEventListener(MouseEvent.CLICK, closeHelp);
}
private function getHelp(evt:Event):void
{
_helpLoader = new Loader();
_helpLoader.load(_helpRequest);
_helpLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showHelp);
}
private function showHelp(evt:Event):void
{
_loader = Loader(evt.target.loader);
// set the width and height of the help swf to the dimensions of the game window.
_loader.content.width = gameUI.singleton.stage.stageWidth;
_loader.content.height = gameUI.singleton.stage.stageHeight;
_helpMc.addChild(_loader.content);
_helpMc.addChild(_exitButton);
addChild(_helpMc);
setChildIndex(_helpMc, numChildren - 1);
_helpLoader.removeEventListener(Event.COMPLETE, showHelp);
}
private function closeHelp(evt:MouseEvent):void
{
removeChild(_helpMc);
}
}