FLASH側のソースも、作る必要があるなー。
フリーのコンパイラが無いかと探してみたら、ありました。
mtasc.exe
コマンドライン形式でのコンパイラですな。
まずFLASHからC#へのメッセージ送信。
フリーのコンパイラが無いかと探してみたら、ありました。
mtasc.exe
コマンドライン形式でのコンパイラですな。
まずFLASHからC#へのメッセージ送信。
FLASH(送信)側のソース
起動したら、メッセージ投げるだけのもの。
class test
{
static function main()
{
fscommand("Flash", "message No.1");
}
}
{
static function main()
{
fscommand("Flash", "message No.1");
}
}
これをtest.asとファイル名付けて保存し、mtasc.exeでコンパイルしたらswfファイルが出来る。
これを使う。
コンパイルは
mtasc -swf test.swf -main test.as -header 400:200:30
でOK。
C#(受信)側
フラッシュのロードは
this.フラッシュオブジェクトの名前.LoadMovie(0, "c:\temp\aaa.swf");
でOK。
フラッシュのイベントFSCommandを作成。
デザインでフラッシュのオブジェクト選択後、プロパティの雷のマーク押して、
デザインでフラッシュのオブジェクト選択後、プロパティの雷のマーク押して、
イベントのFSCommandのところでダブルクリック。
フラッシュから何か受信すると、これが勝手に呼ばれる。超便利。
この引数のeに、フラッシュ側のfscommandで指定した二つの引数の文字列が、そのまま入ってくる。
label1.Text = e.command.ToString();
label3.Text = e.args.ToString();
こんな感じで受け取れば、ラベルに表示される。
FLASHの言語ってのはアクションスプリクトって言うのかー。へー。
フラッシュ部分とスプリクトを切り離す事ができるんだー。へー。
ここに来てようやくその程度のことが分かる。
しかし、さっきからどうも気になる事が。
ヘルプで調べたり、ネットで拾ってきたコードをそのまま入れてるのに、コンパイルエラーの嵐。暴風雨。
なんで?一体何が悪いのか?顔?ここでも顔なのかこら。
watchがどーしてもうまくいかない。半日ぐらい悩んだ。
そしてたどり着いた真実が。
ActionScript 2.0 と 3.0 の相違点
ttp://livedocs.adobe.com/flex/2_jp/langref/migration.html
label3.Text = e.args.ToString();
こんな感じで受け取れば、ラベルに表示される。
fscommandのそれぞれの引数には、日本語入れたら化けた。コード変換が必要?
次にC#からFLASHへのメッセージ送信。
FLASH側。
くだんのページによれば、変数の値が変化するのを待つ(watch)ようにすればいいらしいのだが、
くだんのページによれば、変数の値が変化するのを待つ(watch)ようにすればいいらしいのだが、
mainで待たそうとすると、コンパイルエラーになる。
待つのを関数にして関数コールしても同じ。
どうやら、mainから呼んでいるのが気に入らないっぽい。
別のイベントから呼んでやる必要があるみたい。
別のイベントから呼んでやる必要があるみたい。
となるとボタンか..
ボタン作って、それが押されたら監視に入る、という方向で考えてみる。
ボタンを作るスプリクトの書き方がサッパリ分からない。
だんだん手打ちが面倒になってきたので、それなりのツールを使う事を決意。
Adobe® Flash® CS3 Professionalの体験版をダウンロード。
400メガのダウンロードなんて、一昔前では考えられんかったなぁ。
フラッシュ部分とスプリクトを切り離す事ができるんだー。へー。
ここに来てようやくその程度のことが分かる。
しかし、さっきからどうも気になる事が。
ヘルプで調べたり、ネットで拾ってきたコードをそのまま入れてるのに、コンパイルエラーの嵐。暴風雨。
なんで?一体何が悪いのか?顔?ここでも顔なのかこら。
watchがどーしてもうまくいかない。半日ぐらい悩んだ。
そしてたどり着いた真実が。
ActionScript 2.0 と 3.0 の相違点
ttp://livedocs.adobe.com/flex/2_jp/langref/migration.html
watch() Method | 削除されました。 |
ガーーーーン!!
確かにバージョンは気になってはいたけど、まさか下位互換が無いとは..
2.0では使えるらしいってんで、2.0で書いてみたらあっさり動作。
どうやら、3.0になったら、これまで比較的自由な書き方が許されたのが、随分とお固くなってしまった様子。
じ、じゃあ3.0でwatchにとってかわるものは!?
と調べてみたが、どうもそんなの無いみたい。
有るには有るけど、通信として使うのは無理っぽい。
どーすんだーと悩んだ末、結局たどり着いたのが。
ttp://web.sfc.keio.ac.jp/~shokai/archives/2007/12/cs-as-xmlsocket-command.html
ほー通信できるのか。そりゃ凄い。あっさり解決。
結局、OCX要らないし。
長い旅でした。
トラックバック
トラックバックURL: