我創建簡單的SWF接口:加載SWF和使用它通過接口
public class Test extends MovieClip implements ITest
{
public function Test()
{
Security.allowDomain("*");
Security.allowInsecureDomain("*");
}
public function speak(str):String
{
trace(str);
return "yeah";
}
}
ITEST:
public interface ITest {
// Interface methods:
function speak(str):String
}
然後我試圖加載:
public function SWFLoader()
{
var url='http://xxxxxxxx/test.swf';
var loadURL:URLRequest=new URLRequest(url);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.load(loadURL, context);
}
private function completeHandler(event:Event):void
{
var test:ITest;
test = event.target.content as ITest;
test.speak("ggg");
}
因此,如果我有test.swf在相同的目錄(本地方式),它的工作很好。但是,如果我將它放在專用服務器上:(event.target.content as ITest)將返回null。但是,我可以在沒有界面的情況下訪問speak(),如event.target.content.speak(「a!」);
如何解決這個問題呢?
謝謝,但它不是類型的強制問題。這完全是關於安全。 我試過加載瑞士法郎到網絡服務器,它的工作很好。即使使用checkPolicyFile = false,它也會詢問crossdomain.xml並可以正常工作。 現在我意識到當我在本地機器上運行swf時,我無法從web服務器加載swf。 – Shens 2010-08-12 08:52:19
我不明白安全問題如何導致「event.target.content as ITest」返回null,但「event.target.content.speak(」a!「);」上班。 – David 2010-08-12 09:46:07
我同意David在這裏!對不起,我給你+1,但它是爲大衛:))))沒有問題! ;)你可能會遇到安全問題,但這不是你問題的上下文...... – PatrickS 2010-08-12 10:14:28