2012-11-24 145 views
2

我有一個使用Loader類加載外部SWF的舞臺上的按鈕。我希望在用戶點擊它之外時(即舞臺上的任何其他位置),可以卸載SWF。在SWF外部單擊時卸載外部加載的SWF

到目前爲止,我只需要代碼加載SWF ...

mybutton.addEventListener(MouseEvent.CLICK, fl_LoadExternalSwf); 

function fl_LoadExternalSwf(event:MouseEvent):void 
{ 
var my_Loader:Loader = new Loader(); 
var my_url:URLRequest=new URLRequest("pageFlip.swf"); 

//These listeners detect when the file has finished loading, and if the 
//correct file is loaded. 
my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading); 
my_Loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 

//The load method then loads the SWF file into the loader object. 
my_Loader.load(my_url); 

//This function adds the external SWF to the stage. 
function finishLoading(loadEvent:Event) { 
addChild(loadEvent.currentTarget.content); 
} 

//This function displays a message if the file is not found. 
function errorHandler(errorEvent:Event):void { 
trace("file missing"); 
} 
} 

回答

0

你可以只使用了Loader()類的unload()

function unloadMC(myLoader:Loader, myURL:URLRequest):void { 
myLoader.unLoad(myURL); 
} 

unloadMC(my_Loader, my_url); 

編輯

你需要一個外部接口來調用點擊事件「除了」瑞士法郎。首先你需要用jQuery來實現

$(document).bind('click', function (e) { 
$('#yourSWFObject').clickOutside(); 
}); 

$('#special').bind('click', function(e) { 
    e.stopPropagation(); 
}); 

點擊的方法。之後您需要使用AS3的externalInterface

import flash.external.ExternalInterface; 
public function clickOutside() { 
unloadMC(my_Loader, my_url); 
} 
+0

是的,謝謝!但是當用戶點擊SWF外部時,我該如何調用這個函數? –

+1

只是爲了澄清在OP不明白的情況下:爲了檢測Flash以外的點擊,您需要使用Javascript。 Toxicate20建議使用jQuery檢測HTML中的這些點擊,並在發生這種情況時通過外部接口與Flash進行通信。 – Pier