0


0

私はそのswfで送信ボタンがクリックされたときに最終出力を得るためにfscommandを使っていたという私は1つのswfファイルを持っています警告します。

前もって感謝します

2 Answer


1


`fscommand`はロードされたSWFとそれを含むSWFの間の通信には使用できません。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/system/package.html#fscommand()[livedocs]から

fscommand:SWFファイルをFlash PlayerまたはFlash PlayerをホストしているWebブラウザなどのプログラムのいずれかと通信できるようにします。 fscommand()関数を使用して、DirectorまたはVisual Basic、Visual C、およびActiveXコントロールをホストできるその他のプログラムにメッセージを渡すこともできます。 _

ロードされたswfのメソッドを呼び出すか、そのプロパティに直接アクセスするか、イベントを使用するか、ローカル接続を使用して親とロードされたSWF間でデータを渡すことができます。


0


これは実行可能ですが、悪い考えです。 子swfを呼び出すコールバックを登録する必要があります(通常は子swfから)。 しかし、あなたはかなりの頭痛の危険を冒すことになるでしょう、そしてあなたは他のオプションよりもブラウザに多くを頼る必要があるでしょう。 また、ASのみのソリューションよりも遅くなります。

あなたはずっとこのほうがいいです。

  1. 共有シングルトンを使用する。 これにより、2つのswfを完全に分離することができます。2つの間に大きな調整は必要ありません。 唯一の本当の潜在的な問題はあなたが子供swfにそれ自身の `ApplicationDomain`を持たせたいならば引き起こされることができます、それでもそれでも、回避策があります

  2. イベントを使う これは、子swfにバブリングのキャンセルできないイベントをディスパッチさせ、親swfによって `event.target`を記録させる場合に有効です。 ただし、 `SecuritySandboxViolation`を避けるために調整する必要があるかもしれません。

  3. LocalConnectionsを使用する。 LocalConnectionsには2つの悪影響があります。

    • 2つのLocalConnectionを同じチャンネルに接続することによってスローされるエラーを回避するために、一意の接続名を継続的に再生成する必要があります。

    • LocalConnectionsには、大量のトラフィックがある場合やメッセージが大きすぎる場合に速度低下を招く可能性がある帯域幅の制限があります。

  4. `loader.content.foo.bar.baz`のような直接操作を使います。私はこの解決法が好きではありません。メンテナンスがずっと難しいからです。 設計の観点からすると、これはさらに悪いことになります。この状況ではできるだけカプセル化を使用することをお勧めします - この技法は、それに対して積極的に機能します。