バックグラウンド
ビデオとオーディオの再生に同じ (または可能な限り類似した) ユーザー インターフェイスを提供する単純な「ユニバーサル」メディア プレーヤーを作成しようとしています。残念ながら、私の知る限り、FLVPlayback はオーディオ ファイルを処理できないようです。そのため、Sound と SoundChannel を使用しています。
ビデオの再生は、必要に応じてオンザフライで標準コントロールに「接続」される FLVPlayback コンポーネントを使用して処理されます。私がやりたいことは、サウンドを再生しているときにそれらを Sound / SoundChannel に接続して、両方のケースで同じ UI ウィジェットが機能するようにすることです。FLVPlayback コンポーネントは多くの優れた機能を「無料」で提供しているため、すべてのコンポーネントを最初から作成することは避けたいと考えていますが、少し難しく見え始めています。
ゴーリーのもの
標準の PlayPauseButton は、再生ボタン (およびインスタンス名 play_mc) を含むレイヤーと一時停止ボタン (pause_mc) を含むレイヤーの 2 つのレイヤーを持つムービークリップです。これらの 1 つの中に、次のようなコードを含むムービーがあります。
stop();
this.upLinkageID = "PauseButtonNormal";
this.overLinkageID = "PauseButtonOver";
this.downLinkageID = "PauseButtonDown";
this.disabledLinkageID = "PauseButtonDisabled";
ムービーは 2 フレームあります。
最初のフレームには、インスタンス名が placeholder_mc の単一のムービークリップがあります。
2 番目のフレームにはボタンの状態のインスタンスがありますが、インスタンス名はありません (これにより簡単になります)。ただし、これらは上記の名前のライブラリ オブジェクトのインスタンスです。
私がやりたいのは、これらのボタンの 1 つ (pause_mc など) が渡されたときに、ボタンのような動作を自動的に追加する関数を作成することです。Adobe の「ドキュメント」から理解できないビットは、ムービー クリップ コードに埋め込まれた情報を使用して、placeholder_mc の内容を必要なものと交換する方法です。
tl;dr
本質的に、関数 set_instance を実装して、以下のコードがボタンの表示状態を期待どおりに変更する必要があるだけです。
var my_button:MovieClip = pause_mc;
my_button.addEventListener( MouseEvent.MOUSE_OVER, function( e:Event ){
set_instance( my_button.placeholder_mc, my_button.overLinkageID );
} );