0

バックグラウンド

ビデオとオーディオの再生に同じ (または可能な限り類似した) ユーザー インターフェイスを提供する単純な「ユニバーサル」メディア プレーヤーを作成しようとしています。残念ながら、私の知る限り、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 );
} );
4

2 に答える 2

1

今日、PlayPauseButtonコンポーネントを使用してこれを機能させようとしました。アドビは、私たちが探しているフックを公然と利用できるようにしていないようです:P。

私が思いついた解決策は、Button UIコンポーネントを使用して、のようにスキンを変更することでしたPlayPauseButton

コンポーネントに含まれる2つのムービークリップ(再生と一時停止)から個々のボタンの状態を掘り起こし、インスタンス名を付けてから、メソッドPlayPauseButtonを使用してボタンの適切なスキンプロパティを設定できます。setStyle()伸びないように、ボタンのサイズも23x23に変更してください。

于 2013-01-11T20:59:08.103 に答える
0

私は通常、ボタンを作成してから、次を使用してムービークリップまたは表示オブジェクトをスキンとして割り当てます。

var myButton:Button = new Button();
myButton.setStyle('upSkin', new PlaySkin());
myButton.setStyle('selectedUpSkin', new PauseSkin());

その後、すべてのボタンの状態がFlashによって自動的に処理されます。PlayPauseボタンの場合、ボタンの「toggle」プロパティを「true」に設定できます。クリックするたびに、ボタンは選択したスキンからアップスキンに切り替わり、また元に戻ります。

于 2011-02-23T21:47:18.850 に答える