2012-09-18 40 views
0

我正在開發一個具有Web瀏覽器控件的Windows應用程序。在某些鏈接上,Web瀏覽器加載了.SWF(flash文件),在該flash中,一個按鈕與標題「Start」當用戶點擊這個按鈕時,一些動畫開始。在WebBrowser控件中與Flash文件進行通信C#

我想要這個事件,當用戶點擊「開始」按鈕。 我可以這樣做嗎? 我不能在.SWF文件中放置任何代碼。 任何想法?

回答

1

您必須使用ExternalInterface。首先,我們需要導入這個新的類,所以我們可以使用它(僅AS2,在AS3就沒有進口工作):

import flash.external.ExternalInterface; 

接下來,我們必須註冊,我們要提供外部的任何功能:

ExternalInterface.addCallback("addText", addText); 

基本上,上面的代碼將使我們能夠調用從C#應用程序中的功能addText(我將在一分鐘內顯示)。 addText函數如下。基本上,它需要一個字符串輸入,並追加到一個文本框

function addText(val:String):void 
{ 
     inTxt.appendText(val + "\n"); // append text recieved from c# 
} 

這就是它從ActionScript端。現在我們需要做的就是從C#調用函數。首先,我對Flash Player ActiveX控件的一個實例添加到我的表格,並加載我們在窗體的構造函數創建的SWF:

private AxShockwaveFlash player; 

public DemoForm() 
{ 
     ... 
     player.LoadMovie(0,Application.StartupPath + "\\EITest.swf"); 
     player.Play(); 
     ... 
} 

接下來,我們所要做的就是在需要時調用外部化 方法。在我而言,它是在響應用戶點擊發送按鈕:

private void sendBtn_Click(object sender, EventArgs e) 
{ 
    player.CallFunction("" + outTxt.Text + ""); 
    } 
+0

功能addText(VAL:字符串):無效的方法是在ActionScript中,正確的,如果是,那麼對不起,我不能做到這一點bcoz我不能添加AS中的任何方法。 – Amogh

+1

看看http://fci-h.blogspot.it/2007/06/how-to-play-flash-swf-inside-c.html –

+1

如果可以與社區分享 –