Frage

Es ist ein komplizierter Senario für mich.

Ich habe ein Sound-Management-Singleton mit einem Vermögenswert wie Wörterbuch, das alle Verweise auf meine URLs und mein Vermögen und den Gachen im Inneren speichert.

Ich habe eine Funktion namens namens addItem(id:String, url:String):Object

Ich würde gerne etwas Ähnliches tun wie soundManager.addItem(id:String, url:String).play() oder soundManager.addItem(id:String, url:String).stop() von denen es beide meinen Gegenstand zu meinem Wörterbuch hinzufügen und den Klang spielen werden

Derzeit tue ich das soundManager.addItem(id:String, url:String)dann soundManager.play('myID').

Mein Sound -Asset ist ein Objekt, das ein paar Teile wie Sound, SoundChannel, Soundtransform, URL und einige andere nicht beschreibende Teile enthält.

Ich weiß, dass es sich um Prototypen handelt - ich bin nur noch stecken, wenn ich meine benutzerdefinierten Funktionen und Objekte Prototypen benötige.

Danke im Voraus


Fazit:

Nun, ich habe das Autoplay gemacht, wie in meiner akzeptierten Antwort erwähnt.

Ich habe auch etwas ziemlich Cooles gemacht, von dem ich den Look mag.

Ich erstelle eine SoundManager -Klasse, von der ein SoundObject verhandelt und verwendet, von dem Soundtransform, SoundChannel und alles andere Soundobjekt enthält.

Wenn ich dem SoundManager einen Gegenstand hinzufüge, wird die SoundObject -Klasse, die alle Play (), Pause (), Volume (), Position (), ich brauche, immer zurückgibt.

Es ist wirklich sehr nützlich und ich habe es bereits für 4 Projekte verwendet! Yey.

Danke Jungs für deine Hilfe.

War es hilfreich?

Lösung

Wenn Sie sich den Code ansehen, dann:

soundManager.addItem(url:String)

Gibt ein Objekt zurück (das Sie gerade hinzugefügt haben), das dann das gegeben wird play() Befehl. Sie haben ein paar einfache Optionen.

1) Wenn Sie immer den Sound spielen, fügen Sie den Befehl einfach in die hinzu addItem() Funktion.

2) Wenn Sie genau das tun möchten, was Sie dort haben, müssen Sie eine richtige Klasse für das Soundobjekt mit einer Play () -Funktion erstellen. Wahrscheinlich eine, die ein Ereignis an SoundManager sendet, das dann den Sound wechselt.

3) Fügen Sie der ADD -Anweisung einen Booleschen Hinzufügen hinzu, die eine Autoplay -Funktion ist, so etwas wie:

addItem(value:*, autoPlay:Boolean = false):Object{
if(autoplay) play()
}

Andere Tipps

Was genau meinst du mit "Prototyping"? Meinen Sie zur Laufzeit benutzerdefinierte Methoden zu einem Klassenprototypobjekt? Obwohl dies immer noch möglich ist, ist dies aus folgenden Gründen in AS3 nicht mehr üblich:

  1. nicht typ-safe
  2. schlechte Darbietung
  3. hat selten einen Vorteil gegenüber der Unterklasse.

Außerdem sollten Sie eine Methodensignatur für AddItem auswählen. Sie haben 3. Das ist ein wenig verwirrend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top