SilverlightとFlashの連携について

見返してみたけど、あれでわかる方が不思議なぐらい
適当すぎたので反省。もうちょっと具体的に書きます。

・Flash側の準備
制御に必要なコード(たとえば再生、停止、再生時間の取得など)を
あらかじめ関数として用意しておきます。
それをExternalInterfaceに登録します。

アクションスクリプトの例はこんな感じ。

function setText(str:String)
{
    MyTextArea.text = str;
}
ExternalInterface.addCallback("setText", this.setText);

これでsetTextが外部から呼び出せるようになります。

・Silverlight側のコード
1.Flashのオブジェクトを探す
var elem = HtmlPage.Document.GetElementById("movie");
("movie"の部分はHTML上でのIDを指定してください)
Firefoxだと、この子供のオブジェクトがFlashの本体だったりするので
以下のようなコードを追加

if (elem.Children.Count != 0)
{
    elem = elem.Children
            .First(e => { try { return e.TagName == "embed"; } catch { return false; } });
}

2.Flashのオブジェクトに対してInvoke関数を呼び出す。
名前の文字列を使って呼び出します。Invokeは可変長の引数を受け取る用に
できているのでそのように渡します。この例でいくと

elem.Invoke(setText,"呼び出しテスト");

これで、SilverlightからFlashに通信してMyTextAreaの文字列に
呼び出しテストを設定することができます。

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: zio
Posted on: 2008/07/28 at 20:35
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | コメント (6) | Post RSSRSS comment feed

コメント

全てのコメントが閉じられました