我正在使用flash/actionscript進行遊戲,特別是在某些事情上我有點麻煩。我在閃光方面的知識確實有限,因此在這裏可能無助於我,但無論如何。在我的遊戲中,我有一個幫助按鈕。如果點擊此按鈕,會彈出一個屏幕,顯示如何對玩家執行操作。這些說明分爲多個SWF文件,每次單擊此按鈕時,都會將這些外部SWF文件中的一個加載到遊戲中以供使用。如何使用Actionscript 3卸載或刪除外部加載的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;
}
}
這些叫我loadHelp()函數在gameUI類:
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);
}
}
'removeChild()'不會刪除該對象。它只「隱藏」它(從顯示列表中刪除)。它仍然繼續播放,發出聲音,等等。 – strah
我試過使用'unload()'和'unloadAndStop()'應該照顧它,沒有成功。我在想,@Mike在他的上述評論中說過,如果這是真的,可能可以解釋爲什麼我現在沒有嘗試任何工作。 – hRdCoder