- ベストアンサー
Flash初心者の質問:Localconnectionの制御方法を教えてください
- Flash初心者のSuzukaさんは、Localconnectionを使用して送信側と受け側のフラッシュを制御しています。現在、送信側のボタンでStopを解除できるようにしたいと考えていますが、ボタンではなく(スプライト/MCの)タイムラインに書く方法を知りたいです。しかし、どこにどのように書けばいいのかわからないため、困っています。
- 具体的には、送信側の(スプライトの)タイムラインのアクションレイヤーに`theConnect = new LocalConnection(); theConnect.send("ch02", "Vai");`と書き、受け側のメインフレーム1に`theConnect.connect("ch02"); theConnect.Vai = function() { stop(); };`と追加しましたが、うまく動作しません。初心者のため、基本的なことが抜けているかもしれませんが、どうすればいいか教えていただけますか?
- SuzukaさんはFlash初心者であり、Localconnectionを使用して送信側と受け側のフラッシュを制御しています。現在、Stopを解除できるようにしたいと考えていますが、ボタンではなく(スプライト/MCの)タイムラインに書きたいと思っています。しかし、どこにどのように書けばいいのかわからないため、困っています。何かアドバイスがありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> Stopを解除したい送信 つまり受信側SWFを play() させたいということですよね。 > ボタンではなく、(スプライト/MCの)タイムラインに書きたいのですが、 > どこにどのように書けば良いのでしょうか? それは私の知る所ではありません。 その実行命令を出したいフレームに書くのです。 フレームに書くということは、 そのフレームに達したとき自動実行または自動定義するということです。 そのスクリプトを実行させたいフレームに書きます。 それがどこなのか具体的な場所は他者にはわかりませんよ。 オーソドックスな形では次のようにします。 送信SWF側にあるボタンが _root にあるボタンで、 インスタンス名として 「myBTN」 を付けていたとします。 送信側 の _root の アクションレイヤー に以下を書く。 ============================================ // 送信側 _root フレーム1 辺りに書く↓ theConnect = new LocalConnection(); // 送信側 ボタン「myBTN」があるフレームに書く↓ // (ボタンが フレーム1 からある場合は フレーム1 で良い) myBTN.onRelease = function(){ theConnect.send("ch01", "Halt"); }; // 送信側 _root 実行したいキーフレームに書く↓ // (キーフレームはフレームを右クリック→「キーフレーム追加」) theConnect.send("ch01", "Work"); ============================================ 受信側 の _root の アクションレイヤー に以下を書く。 ============================================ // 受信側 _root フレーム1 辺りに書く↓ theConnect = new LocalConnection(); theConnect.Halt = function() { stop(); }; theConnect.Work = function() { play(); }; theConnect.connect("ch01"); ============================================ ここまでをまず理解する必要があります。 「ch01」はコネクションの名前です。 かなり多くのSWFどうしが連携する場合は違う名前にする必要もあるのかもしれませんが、 普通は「ch01」1つでかまいません。 そのコネクションの名前を設定してある LocalConnection インスタンス 「theConnect」 に対して、 theConnect.Halt や theConnect.Work のように 複数の関数を定義すれば、複数の動作が可能になります。 Halt や Work は関数名(ユーザ定義関数名)です。 > (スプライト/MCの)タイムラインに書きたいのですが、 ここの部分は上までの話と全く違います。 切り分けて考えましょう。 スプライトのタイムラインに書くということは、 _rootとは違う スプライト という階層から、_root にある LocalConnection インスタンス 「theConnect」 に対して、 send(○○); を実行させることになりますから、 「theConnect」 に対するターゲットパスが必要です。 (ターゲットパスに関しては確か以前に書きましたよね。) つまりこの辺は LocalConnection 云々以前の問題です。 ちなみに、 キャンバス上に配置したスプライトやボタンやテキストフィールドがインスタンスであるように、 theConnect = new LocalConnection(); で作成した 「theConnect」 も インスタンスです。 見えるか見えないかの違いはありますが同じインスタンスです。 というわけで、上のスクリプト // 送信側 _root 実行したいキーフレームに書く↓ // (キーフレームはフレームを右クリック→「キーフレーム追加」) theConnect.send("ch01", "Work"); これを次のように変更します。 // 送信側 スプライト 実行したいキーフレームに書く↓ // (キーフレームはフレームを右クリック→「キーフレーム追加」) _root.theConnect.send("ch01", "Work");
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1 です。 結局できたのかできなかったのか良くわかりませんが、 > 特にWorkとかHaltとか変数には制限はないんですよね? について。 私から見れば制限は全くないように思えますが、 それは元から Flash という檻の中から見た視点 で考えるからであって、 客観的に 全然違う視点の人から見た視点 を考えれば制限だらけだと思います。 まず、日本語が使えない。漢字が使えない。(←VBAなら使えるのに...) ロシア文字とかもダメ。 数はダメ。(←数混じりの英数文字なら良い。) 予約語もダメ。 既存の 関数名・クラス名・メソッド名・プロパティ名・イベント名 も避けるべき。 「.(ドット)」「/(スラッシュ)」「"(ダブルクォーテーション)」などなど…も使えない。 「Flash での命名術」 http://support.adobe.co.jp/faq/faq/qadoc.sv?228649+002 ↑ごちゃごちゃ書いていますが、 結局、 半角英数文字のうち英文字「ABC…、abc…」とアンダースコア「_」など から始まっていて、 全体的に半角英数文字とアンダースコアなど以内の文字列でできていれば良いのです。 つまり、私から見れば 「全く制限なし!」 です。 しかし、最初に書いたとおり、よくよく考えると制限だらけかもしれません。 「何でも良い!」 ←紙一重→ 「制限だらけ!」
お礼
>既存の 関数名・クラス名・メソッド名・プロパティ名・イベント名 も避けるべき。 こういうのもちょっと不安なのでした。これも次第にサンプル例文を 参考に自分で注意できるように頑張りたいです。 前回同様、スパッと爽やかに解決して頂き大変助かりました! ☆☆☆! 初心者を救済して頂き有難う御座いました!
補足
へー・・・。 参考になります。やっぱ他人に相談すると、というか、 先達方に相談すると視点が高くて、イイ!です。 誰にも相談できない環境でやっていましたので、 OKWaveで非常に助かりました。 個人的にVaiと適当に命名したのが、言われるとおりWorkに 直したらできた、、、というのは私の完全な錯覚なのでしょうけど、 初心者がいきなりこういうASに触れてやっていましたから、 Suzukaで作っても多分、間違いだらけなんだと思います。やっぱ基本が欲しいです。 今日図書館にも行ってきたんですが、Flash(体験版ももったいなくて)を まだ持っていないので無駄足でした。。Suzuka出身者でして、なかなか http://suzupara.iinaa.net/だけではASを理解するのは難しいです。 また年末にでもFL体験版をインストールして修行したいと思います。 それまで頑張ってSuzukaでやっていきたいです。 そのうち今書かれている内容ももっと良く理解できるように、 柔軟な脳ミソに仕上がりたいと思っております(恥)^^;
お礼
本当にありがとうございました!!! な、なんとか動く感じになりました。 いつかBlurFiltanさんのように スパッとやれるようになりたいです。 接続名? = new LocalConnection(); という定義?は Movieに1つでいいんですね。Ch01というのも1個で今回は良いし。 勉強になりました。 http://hfm-kenchan.com/Lesson/log_qa/D0411142.htm を参考にやっていたのですが、なかなか初心者故に 色々悩んでいました。本当にありがたかったです、助かりました。 喉元に刺さっていた骨がようやくとれた感じです!
補足
キタ――――――――――――!! やった―――!! !!!!!!!!!!!!!!!!!!!!!!Incredibile!!!!!!!!!!!!!!!!!!!!!!!!! あ、、、、あれ?動かなくなってしまいました。。 やはり素人で、パスだったりが弱いのかも、、です。 本当は色々な概念がしっかり判らず、非常に不安定です。 先日も有難う御座いました。色々な問題をクリアしてきており、 非常に助かっています。 >「theConnect」 も インスタンスです。 目からウロコです。そうなんですね。Webのいろんな所からサンプル を拾って改変しているので、理解できておりませんでした。 ちょっともう一度どこが悪かったのかしっかり点検してみます。 特にWorkとかHaltとか変数には制限はないんですよね?3文字では 駄目だとか。。とにかくやってみます。