Paket | flash.media |
Klass | public final class SoundChannel |
Arv | SoundChannel EventDispatcher Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
stop()
-metod, egenskaper för att övervaka kanalens amplitud (volym) samt en egenskap för att tilldela kanalen ett SoundTransform-objekt.
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
leftPeak : Number [skrivskyddad]
Den aktuella amplituden (volymen) i den vänstra kanalen, från 0 (tyst) till 1 (full amplitud). | SoundChannel | ||
position : Number [skrivskyddad]
När ljudet spelas upp anger egenskapen position vilken position (i millisekunder) i ljudfilen som spelas upp just nu. | SoundChannel | ||
rightPeak : Number [skrivskyddad]
Den aktuella amplituden (volymen) i den högra kanalen, från 0 (tyst) till 1 (full amplitud). | SoundChannel | ||
soundTransform : flash.media:SoundTransform
Det SoundTransform-objekt som är tilldelat ljudkanalen. | SoundChannel |
Metod | Definieras med | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | EventDispatcher | ||
Skickar en händelse till händelseflödet. | EventDispatcher | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | EventDispatcher | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | EventDispatcher | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Stoppar ljudet som spelas upp i kanalen. | SoundChannel | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | EventDispatcher |
Händelse | Sammanfattning | Definieras med | ||
---|---|---|---|---|
[utsändningshändelse] Skickas när Flash Player eller AIR får operativsystemfokus och blir aktivt. | EventDispatcher | |||
[utsändningshändelse] Skickas när Flash Player eller AIR förlorar operativsystemfokus och blir inaktivt. | EventDispatcher | |||
Skickas när ett ljud har spelats upp. | SoundChannel |
leftPeak | egenskap |
position | egenskap |
position:Number
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
När ljudet spelas upp anger egenskapen position
vilken position (i millisekunder) i ljudfilen som spelas upp just nu. När ljudet stoppas eller pausas anger egenskapen position
vilken position i ljudfilen som senast spelats upp.
Ett vanligt sätt att använda egenskapen position
är att spara dess värde när ljudet stoppas. Då kan ljuduppspelningen återupptas senare genom att det startas från den sparade positionen.
Om ljudet ligger i en slinga återställs position
till 0 i början av varje slinga.
Implementering
public function get position():Number
rightPeak | egenskap |
soundTransform | egenskap |
soundTransform:flash.media:SoundTransform
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Det SoundTransform-objekt som är tilldelat ljudkanalen. Ett SoundTransform-objekt innehåller egenskaper för inställning av volym, panorering och vänstra och högra högtalaren.
Implementering
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Relaterade API-element
stop | () | metod |
public function stop():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Stoppar ljudet som spelas upp i kanalen.
Exempel ( Så här använder du exemplet )
I konstruktorn läses ljudfilen in. (I det här exemplet antas att filen finns i samma katalog som SWF-filen.) Ett textfält används som en knapp som användaren kan använda för att spela upp eller pausa ljudet. När användaren markerar textfältet button
anropas metoden clickHandler()
.
I metoden clickHandler()
anges att ljudet ska spelas upp och det tilldelas en ljudkanal första gången användaren markerar textfältet. När användaren sedan markerar textfältet för att pausa stoppas ljuduppspelningen. Egenskapen position
för ljudkanalen registrerar ljudets position när det stoppades. Den här egenskapen används för att fortsätta uppspelningen av ljudet från den positionen, efter att användaren har markerat textfältet för att återuppta uppspelningen. Varje gång metoden Sound.play()
anropas skapas ett nytt SoundChannel-objekt och tilldelas variabeln channel
. Sound-objektet måste tilldelas ett SoundChannel-objekt för att metoden stop()
för ljudkanalen ska kunna användas för att pausa ljudet.
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.events.MouseEvent; import flash.text.TextFieldAutoSize; public class SoundChannel_stopExample extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var button:TextField = new TextField(); public function SoundChannel_stopExample() { var req:URLRequest = new URLRequest("MySound.mp3"); snd.load(req); button.x = 10; button.y = 10; button.text = "PLAY"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.CENTER; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { var pausePosition:int = channel.position; if(button.text == "PLAY") { channel = snd.play(pausePosition); button.text = "PAUSE"; } else { channel.stop(); button.text = "PLAY"; } } } }
soundComplete | Händelse |
flash.events.Event
egenskap Event.type =
flash.events.Event.SOUND_COMPLETE
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickas när ett ljud har spelats upp.
KonstantenEvent.SOUND_COMPLETE
definierar värdet på type
-egenskap i ett soundComplete
-händelseobjekt.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
target | Det SoundChannel-objekt på vilket ett ljud har slutat spela. |
Exempel ( Så här använder du exemplet )
I konstruktorn definieras ett textfält som innehåller låtlistan och en rad för att spela upp markeringen. (Oftast används knappar för uppspelning och listrutor för låtlistor.) Ett textformatobjekt definieras, som ändrar formatet på låtraderna till kursivt, efter att de har markerats. När en användare väljer textfältet anropas metoden clickHandler()
.
I metoden clickHandler()
returnerar metoden getLineIndexAtPoint()
för textfältsobjektet indexvärdet för den rad som användaren markerade. Med hjälp av radindex hämtar metoden getLineText()
textinnehållet. If-satsen kontrollerar huruvida användaren valde att spela upp en låt eller lägga till den i spellistan. Om en användare har valt att spela upp och en låt har valts, tas händelseavlyssnaren för musklick bort och metoden playNext()
anropas för att börja spela upp låtarna. Om en användare har valt en låttitel läggs radens innehåll till i arrayen songList
och radens format ändras till kursivt.
Metoden playNext()
itereras genom arraylistan för att läsa in och spela upp varje låt. Låten tilldelas också en ljudkanal. En händelseavlyssnare för ljudkanalen läggs till för att aktiveras när uppspelningen av låten slutförs och händelsen Event.SOUND_COMPLETE
skickas. Metoden soundCompleteHandler()
anropar sedan metoden playNext()
för att spela upp nästa låt. Den här processen fortsätter tills alla låtar i arrayen har spelats upp.
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.text.TextFormat; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; public class SoundChannel_event_soundCompleteExample extends Sprite { private var channel:SoundChannel = new SoundChannel(); private var songList:Array = new Array(); private var listTextField:TextField = new TextField(); private var songFormat:TextFormat = new TextFormat(); private var arrayIndex:int = 0; private var songSelected:Boolean = false; public function SoundChannel_event_soundCompleteExample() { listTextField.autoSize = TextFieldAutoSize.LEFT; listTextField.border = true listTextField.background = true; listTextField.text = "Song1.mp3\n" + "Song2.mp3\n" + "Song3.mp3\n" + "Song4.mp3\n" + "PLAY"; songFormat.italic = true; listTextField.addEventListener(MouseEvent.CLICK, clickHandler); addChild(listTextField); } private function clickHandler(e:MouseEvent):void { var index:int = listTextField.getLineIndexAtPoint(e.localX, e.localY); var line:String = listTextField.getLineText(index); var firstIndex:uint = listTextField.getLineOffset(index); var playLine:uint = listTextField.numLines - 1; if((index == playLine) && (songSelected == true)) { listTextField.removeEventListener(MouseEvent.CLICK, clickHandler); playNext(); } else if (index != playLine) { songList.push(line.substr(0, (line.length - 1))); listTextField.setTextFormat(songFormat, firstIndex, (firstIndex + listTextField.getLineLength(index))); songSelected = true; } } private function playNext():void { if(arrayIndex < songList.length) { var snd:Sound = new Sound(); snd.load(new URLRequest(songList[arrayIndex])); channel = snd.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); arrayIndex++; } else { songSelected = false; while(arrayIndex > 0) { songList.pop(); arrayIndex--; } } } private function soundCompleteHandler(e:Event):void { playNext(); } private function errorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.utils.Timer; public class SoundChannelExample extends Sprite { private var url:String = "MySound.mp3"; private var soundFactory:Sound; private var channel:SoundChannel; private var positionTimer:Timer; public function SoundChannelExample() { var request:URLRequest = new URLRequest(url); soundFactory = new Sound(); soundFactory.addEventListener(Event.COMPLETE, completeHandler); soundFactory.addEventListener(Event.ID3, id3Handler); soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); channel = soundFactory.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); positionTimer = new Timer(50); positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler); positionTimer.start(); } private function positionTimerHandler(event:TimerEvent):void { trace("positionTimerHandler: " + channel.position.toFixed(2)); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function id3Handler(event:Event):void { trace("id3Handler: " + event); } private function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); positionTimer.stop(); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } private function soundCompleteHandler(event:Event):void { trace("soundCompleteHandler: " + event); positionTimer.stop(); } } }
Tue Jun 12 2018, 01:40 PM Z