0

私にとっては複雑なシナリオです。

私は、私のURLと資産へのすべての参照とその中のガフを格納する辞書のような資産を備えた健全な管理シングルトンを持っています-

という関数がありますaddItem(id:String, url:String):Object

アイテムを辞書に追加し、サウンドの再生を開始するのと同様のことをしたいと思ってsoundManager.addItem(id:String, url:String).play()いますsoundManager.addItem(id:String, url:String).stop()

現在、私はそうしていsoundManager.addItem(id:String, url:String) ますsoundManager.play('myID')

私のサウンド アセットは、Sound、SoundChannel、SoundTransform、URL、およびその他の説明のない部分など、いくつかのビットを含むオブジェクトです。

プロトタイピングになることはわかっています。カスタム関数とオブジェクトのプロトタイプを作成する必要があるときは、行き詰まってしまいます。

前もって感謝します


結論:

さて、受け入れられた回答で述べたように、自動再生を行いました。

私はまた、見た目が好きなかなりクールなことをしました。

SoundManager クラスを作成します。このクラスは、SoundTransform、SoundChannel、およびその他の Sound オブジェクトが必要とするすべてを含む SoundObject を処理および使用します。

このように、アイテムを SoundManager に追加すると、必要なすべての play()、pause()、volume()、position() を組み込んだ SoundObject クラスが常に返されます。

とても便利で、すでに 4 つのプロジェクトで使用しています。ええ。

助けてくれてありがとう。

4

2 に答える 2

0

「プロトタイピング」とは正確には何を意味しますか?実行時にクラスのプロトタイプ オブジェクトにカスタム メソッドを追加するということですか? まだ可能ですが、次の理由により、AS3 ではもはや一般的ではありません。

  1. タイプセーフではない
  2. パフォーマンスが悪い
  3. サブクラス化よりも利点があることはめったにありません。

また、addItem のメソッド シグネチャを 1 つ選択する必要があります。あなたは 3 を挙げました。それは少し紛らわしいです。

于 2010-03-19T12:12:57.607 に答える
0

コードを見ている場合:

soundManager.addItem(url:String)

オブジェクト(追加したばかり)を返し、play()コマンドが与えられます。これにはいくつかの簡単なオプションがあります。

1) 常にサウンドを再生する場合は、addItem()関数にコマンドを追加するだけです。

2) そこにあるものを正確に実行したい場合は、play() 関数を使用してサウンド オブジェクトの適切なクラスを作成する必要があります。おそらく、サウンドを切り替えるイベントをsoundManagerにディスパッチするものです。

3) 次のような自動再生関数である add ステートメントにブール値を追加します。

addItem(value:*, autoPlay:Boolean = false):Object{
if(autoplay) play()
}
于 2010-03-19T12:14:26.370 に答える