Revision: 60422
Updated Code
at March 30, 2013 04:23 by hejaaa
Updated Code
package decko.sound {
import flash.media.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.utils.Dictionary;
import flash.utils.getDefinitionByName;
import flash.system.ApplicationDomain;
import flash.media.Sound;
import com.greensock.TweenMax;
/**
* Trieda na jednoduchu manipulaciu so zvukom. Hlavny parameter soundID v prikazoch moze nadobudat
* 4 rozne datove typy (String ako url, String ako kompletnu cestu ku Class, samotny objekt Class, objekt Sound).
* @author FCI
* @version v2
*/
public class SoundMix {
public static var muteFade:Number = .1;
protected static var _mute:Boolean;
protected static var dictionary:Dictionary = new Dictionary();
protected static var stUpdate:SoundTransform;
public var sound:Sound;
public var playing:Boolean;
public var channel:SoundChannel;
public var fade:Number = .5;
public var parallel:Boolean = true;
public var volume:Number = 1;
public var loops:int = 0;
public var soundComplete:Function = null;
/**
* Spusti prehravanie zvuku
* @param soundID tento parameter moze prijimat 4 rozne typy dat: Class vo forme retazca s kompletnym mennym priestorom, priamo ako Class, objekt Sound a url cestu k mp3 suboru
* @param vars parallel: true, volume: 1, loops: 0, fade: .5, onComplete: null
*/
public function SoundMix(soundID:Object, vars:Object = null) {
if (vars == null) {
vars = { parallel: 1, volume: 1, loops: 1, fade: 1, soundComplete: 1 };
}
vars.hasOwnProperty("parallel") ? parallel = vars.parallel : true;
vars.hasOwnProperty("volume") ? volume = vars.volume : null;
vars.hasOwnProperty("loops") ? loops = vars.loops : null;
vars.hasOwnProperty("fade") ? fade = vars.fade : null;
vars.hasOwnProperty("onComplete") ? soundComplete = vars.onComplete : null;
if (parallel || !(dictionary[soundID] && dictionary[soundID].playing)) {
if (dictionary[soundID] && dictionary[soundID].playing){
TweenMax.killTweensOf(dictionary[soundID].channel);
}
if(soundID is String){
if (!ApplicationDomain.currentDomain.hasDefinition(String(soundID))) {
var reg:RegExp = /\.mp3/i;
if(reg.test(String(soundID))){
sound = new Sound(new URLRequest(String(soundID)));
sound.addEventListener(IOErrorEvent.IO_ERROR, soundIOError)
}else{
throw new Error("Error url or soundID!");
}
} else {
var soundClass:Class;
soundClass = getDefinitionByName(String(soundID)) as Class;
sound = new soundClass();
}
}else if (soundID is Class) {
sound = new soundID();
}else if(soundID is Sound){
sound = Sound(soundID);
}
channel = sound.play(0, loops, new SoundTransform(0));
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
TweenMax.to(channel, fade, {volume: volume});
playing = true;
dictionary[soundID] = this;
}
}
private function soundIOError(e:IOErrorEvent):void {
throw new Error("Error url in soundID!");
}
public function soundStop():void {
channel.stop();
channel.removeEventListener(Event.SOUND_COMPLETE, playComplete);
playing = false;
}
protected function playComplete(e:Event):void {
playing = false;
soundComplete == null ? soundComplete() : null;
}
// STATIC FUNCTION
// ----------------------------------------------------------------------------------------------------------
/**
* Spusti prehravanie zvuku
* @param soundID tento identifikator moze prijimat 4 rozne typy dat: Class vo forme retazca s kompletnym mennym priestorom, priamo ako Class, objekt Sound a url cestu k mp3 suboru
* @param vars parallel: true, volume: 1, loops: 0, fade: .5, onComplete: null
*/
public static function play(soundID:Object, vars:Object = null):SoundMix {
return new SoundMix(soundID, vars);
}
/**
* @param soundID identifikator zvuku
*/
public static function stop(soundID:Object):void {
if (dictionary[soundID] && dictionary[soundID].playing) {
TweenMax.to(dictionary[soundID].channel, dictionary[soundID].fade, {volume: 0, onComplete: dictionary[soundID].soundStop});
}
}
/**
* overi ci sa prave prehrava skladba s konkretnym soundID
* @param soundID nazov CLASS s kompletnou cestou alebo url adresa
*/
public static function isPlaying(soundID:Object):Boolean {
return dictionary[soundID].playing;
}
public static function get mute():Boolean {
return _mute;
}
public static function set mute(value:Boolean):void {
_mute = value;
var volumeInit:Number = int(_mute);
var volume:Number = int(!_mute);
stUpdate = new SoundTransform(volumeInit);
TweenMax.to(stUpdate, muteFade, { volume: volume, onUpdate: updateVolume } );
}
protected static function updateVolume():void {
SoundMixer.soundTransform = stUpdate;
}
}
}
Revision: 60421
Updated Code
at March 30, 2013 04:21 by hejaaa
Updated Code
package decko.sound {
import flash.media.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.utils.Dictionary;
import flash.utils.getDefinitionByName;
import flash.system.ApplicationDomain;
import flash.media.Sound;
import com.greensock.TweenMax;
/**
* Trieda na jednoduchu manipulaciu so zvukom. Hlavny parameter soundID v prikazoch moze nadobudat
* 4 rozne datove typy (String ako url, String ako kompletnu cestu ku Class, samotny objekt Class, objekt Sound).
* @author FCI
* @version v2
*/
public class SoundMix {
public static var muteFade:Number = .1;
protected static var _mute:Boolean;
protected static var dictionary:Dictionary = new Dictionary();
protected static var stUpdate:SoundTransform;
public var sound:Sound;
public var playing:Boolean;
public var channel:SoundChannel;
public var fade:Number = .5;
public var parallel:Boolean = true;
public var volume:Number = 1;
public var loops:int = 0;
public var soundComplete:Function = null;
/**
* Spusti prehravanie zvuku
* @param soundID tento parameter moze prijimat 4 rozne typy dat: Class vo forme retazca s kompletnym mennym priestorom, priamo ako Class, objekt Sound a url cestu k mp3 suboru
* @param vars parallel: true, volume: 1, loops: 0, fade: .5, onComplete: null
*/
public function SoundMix(soundID:Object, vars:Object = null) {
if (vars == null) {
vars = { parallel: 1, volume: 1, loops: 1, fade: 1, soundComplete: 1 };
}
vars.hasOwnProperty("parallel") ? parallel = vars.parallel : true;
vars.hasOwnProperty("volume") ? volume = vars.volume : null;
vars.hasOwnProperty("loops") ? loops = vars.loops : null;
vars.hasOwnProperty("fade") ? fade = vars.fade : null;
vars.hasOwnProperty("onComplete") ? soundComplete = vars.onComplete : null;
if (parallel || !(dictionary[soundID] && dictionary[soundID].playing)) {
if (dictionary[soundID] && dictionary[soundID].playing){
TweenMax.killTweensOf(dictionary[soundID].channel);
}
if(soundID is String){
if (!ApplicationDomain.currentDomain.hasDefinition(String(soundID))) {
var reg:RegExp = /\.mp3/i;
if(reg.test(String(soundID)))
sound = new Sound(new URLRequest(String(soundID)));
else
throw new Error("Error url or soundID!");
} else {
var soundClass:Class;
soundClass = getDefinitionByName(String(soundID)) as Class;
sound = new soundClass();
}
}else if (soundID is Class) {
sound = new soundID();
}else if(soundID is Sound){
sound = Sound(soundID);
}
channel = sound.play(0, loops, new SoundTransform(0));
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
TweenMax.to(channel, fade, {volume: volume});
playing = true;
dictionary[soundID] = this;
}
}
public function soundStop():void {
channel.stop();
channel.removeEventListener(Event.SOUND_COMPLETE, playComplete);
playing = false;
}
protected function playComplete(e:Event):void {
playing = false;
soundComplete == null ? soundComplete() : null;
}
// STATIC FUNCTION
// ----------------------------------------------------------------------------------------------------------
/**
* Spusti prehravanie zvuku
* @param soundID tento identifikator moze prijimat 4 rozne typy dat: Class vo forme retazca s kompletnym mennym priestorom, priamo ako Class, objekt Sound a url cestu k mp3 suboru
* @param vars parallel: true, volume: 1, loops: 0, fade: .5, onComplete: null
*/
public static function play(soundID:Object, vars:Object = null):SoundMix {
return new SoundMix(soundID, vars);
}
/**
* @param soundID identifikator zvuku
*/
public static function stop(soundID:Object):void {
if (dictionary[soundID] && dictionary[soundID].playing) {
TweenMax.to(dictionary[soundID].channel, dictionary[soundID].fade, {volume: 0, onComplete: dictionary[soundID].soundStop});
}
}
/**
* overi ci sa prave prehrava skladba s konkretnym soundID
* @param soundID nazov CLASS s kompletnou cestou alebo url adresa
*/
public static function isPlaying(soundID:Object):Boolean {
return dictionary[soundID].playing;
}
public static function get mute():Boolean {
return _mute;
}
public static function set mute(value:Boolean):void {
_mute = value;
var volumeInit:Number = int(_mute);
var volume:Number = int(!_mute);
stUpdate = new SoundTransform(volumeInit);
TweenMax.to(stUpdate, muteFade, { volume: volume, onUpdate: updateVolume } );
}
protected static function updateVolume():void {
SoundMixer.soundTransform = stUpdate;
}
}
}
Revision: 60420
Updated Code
at November 12, 2012 19:13 by hejaaa
Updated Code
// EXAMPLE /////////////////////////////////
const BACKGROUND_MUSIC:string = "sound.BackgroundMusic";
const OVER_BUTTON:string = "sound.OverButton";
SoundMix.play(BACKGROUND_MUSIC);
button1.addEventListener(MouseEvent.MOUSE_OVER, button1Over);
button1.addEventListener(MouseEvent.ROLL_OUT, button1Out);
private function button1Over(e:MouseEvent):void {
SoundMix.play(OVER_BUTTON, false);
}
private function button1Out(e:MouseEvent):void {
SoundMix.stop(OVER_BUTTON);
}
////////////////////////////////////////////
package com.sound {
import flash.media.*;
import flash.events.*;
import flash.utils.getDefinitionByName;
import flash.external.ExternalInterface;
/**
* @author FCI
* @version 1.1
*/
public class SoundMix {
private static var _mute:Boolean;
protected static var playing:Boolean;
protected static var dic:Object = { };
/**
* umozni zapinat/vypinat zvuky cez JavaScript s definovanou funkciou v parametri functionName
* @param functionName nazov funkcie v JS
*/
public static function activate(functionName:String = "toggleMuteFlash"):void {
if (ExternalInterface.available) {
ExternalInterface.addCallback(functionName, toggleMute);
}
}
protected static function toggleMute() {
mute = !mute;
}
/**
* @param soundID nazov CLASS s kompletnou cestou
*/
public static function stop(soundID:String):void {
if (dic[soundID]) {
dic[soundID].stop();
dic[soundID].removeEventListener(Event.SOUND_COMPLETE, playComplete);
dic[soundID] = null;
playing = false;
}
}
/**
* @param soundID nazov CLASS s kompletnou cestou
* @param parallel prehra aj pocas spustenej skladby
* @param volume hlasitost
* @param loops pocet opakovani
*/
public static function play(soundID:String, parallel:Boolean = true, volume:Number = 1, loops:int = 0):void {
if ((parallel) || (!parallel && !playing)) {
var soundClass:Class;
var sound:Sound;
var channel:SoundChannel;
soundClass = getDefinitionByName(soundID) as Class;
sound = new soundClass();
channel = sound.play(0, loops, new SoundTransform(volume));
dic[soundID] = channel;
if (!parallel) {
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
playing = true;
}
}
}
/**
* overi ci sa prave prehrava skladba s konkretnym soundID
* @param soundID nazov CLASS s kompletnou cestou
* @return navratova hodnota vyhodnocujuca prehravanie
*/
//TODO: nedokonale overovanie prehravania
public static function isPlaying(soundID:String):Boolean {
var playing:Boolean;
if (dic[soundID] && dic[soundID].position != 0) {
playing = true;
}else {
playing = false;
}
return playing;
}
protected static function playComplete(e:Event):void {
playing = false;
}
static public function get mute():Boolean {
return _mute;
}
static public function set mute(value:Boolean):void {
_mute = value;
var st:SoundTransform = new SoundTransform();
st.volume = _mute ? 0 : 1;
SoundMixer.soundTransform = st;
}
}
}
Revision: 60419
Updated Code
at November 12, 2012 19:12 by hejaaa
Updated Code
// EXAMPLE /////////////////////////////////
const BACKGROUND_MUSIC:string = "sound.BackgroundMusic";
const OVER_BUTTON:string = "sound.OverButton";
SoundFX.play(BACKGROUND_MUSIC);
button1.addEventListener(MouseEvent.MOUSE_OVER, button1Over);
button1.addEventListener(MouseEvent.ROLL_OUT, button1Out);
private function button1Over(e:MouseEvent):void {
SoundFX.play(OVER_BUTTON, false);
}
private function button1Out(e:MouseEvent):void {
SoundFX.stop(OVER_BUTTON);
}
////////////////////////////////////////////
package com.sound {
import flash.media.*;
import flash.events.*;
import flash.utils.getDefinitionByName;
import flash.external.ExternalInterface;
/**
* @author FCI
* @version 1.1
*/
public class SoundMix {
private static var _mute:Boolean;
protected static var playing:Boolean;
protected static var dic:Object = { };
/**
* umozni zapinat/vypinat zvuky cez JavaScript s definovanou funkciou v parametri functionName
* @param functionName nazov funkcie v JS
*/
public static function activate(functionName:String = "toggleMuteFlash"):void {
if (ExternalInterface.available) {
ExternalInterface.addCallback(functionName, toggleMute);
}
}
protected static function toggleMute() {
mute = !mute;
}
/**
* @param soundID nazov CLASS s kompletnou cestou
*/
public static function stop(soundID:String):void {
if (dic[soundID]) {
dic[soundID].stop();
dic[soundID].removeEventListener(Event.SOUND_COMPLETE, playComplete);
dic[soundID] = null;
playing = false;
}
}
/**
* @param soundID nazov CLASS s kompletnou cestou
* @param parallel prehra aj pocas spustenej skladby
* @param volume hlasitost
* @param loops pocet opakovani
*/
public static function play(soundID:String, parallel:Boolean = true, volume:Number = 1, loops:int = 0):void {
if ((parallel) || (!parallel && !playing)) {
var soundClass:Class;
var sound:Sound;
var channel:SoundChannel;
soundClass = getDefinitionByName(soundID) as Class;
sound = new soundClass();
channel = sound.play(0, loops, new SoundTransform(volume));
dic[soundID] = channel;
if (!parallel) {
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
playing = true;
}
}
}
/**
* overi ci sa prave prehrava skladba s konkretnym soundID
* @param soundID nazov CLASS s kompletnou cestou
* @return navratova hodnota vyhodnocujuca prehravanie
*/
//TODO: nedokonale overovanie prehravania
public static function isPlaying(soundID:String):Boolean {
var playing:Boolean;
if (dic[soundID] && dic[soundID].position != 0) {
playing = true;
}else {
playing = false;
}
return playing;
}
protected static function playComplete(e:Event):void {
playing = false;
}
static public function get mute():Boolean {
return _mute;
}
static public function set mute(value:Boolean):void {
_mute = value;
var st:SoundTransform = new SoundTransform();
st.volume = _mute ? 0 : 1;
SoundMixer.soundTransform = st;
}
}
}
Revision: 60418
Updated Code
at November 7, 2012 20:07 by hejaaa
Updated Code
// EXAMPLE /////////////////////////////////
const BACKGROUND_MUSIC:string = "sound.BackgroundMusic";
const OVER_BUTTON:string = "sound.OverButton";
SoundFX.play(BACKGROUND_MUSIC);
button1.addEventListener(MouseEvent.MOUSE_OVER, button1Over);
button1.addEventListener(MouseEvent.ROLL_OUT, button1Out);
private function button1Over(e:MouseEvent):void {
SoundFX.play(OVER_BUTTON, false);
}
private function button1Out(e:MouseEvent):void {
SoundFX.stop(OVER_BUTTON);
}
////////////////////////////////////////////
package com.sound{
import flash.media.*;
import flash.events.*;
import flash.utils.getDefinitionByName;
/**
* @author FCI
*/
public class SoundFX {
protected static var playing:Boolean;
protected static var dic:Object = {};
/**
* @param soundID nazov CLASS s kompletnou cestou
*/
public static function stop(soundID:String):void {
if(dic[soundID]){
dic[soundID].stop();
dic[soundID].removeEventListener(Event.SOUND_COMPLETE, playComplete);
dic[soundID] = null;
playing = false;
}
}
/**
* @param soundID nazov CLASS s kompletnou cestou
* @param parallel prehra aj pocas spustenej skladby
* @param volume hlasitost
* @param loops pocet opakovani
*/
public static function play(soundID:String, parallel:Boolean = true, volume:Number = 1, loops:int = 0):void {
if ((parallel) || (!parallel && !playing)) {
var soundClass:Class;
var sound:Sound;
var channel:SoundChannel;
soundClass = getDefinitionByName(soundID) as Class;
sound = new soundClass();
channel = sound.play(0, loops, new SoundTransform(volume));
dic[soundID] = channel;
if(!parallel){
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
playing = true;
}
}
}
protected static function playComplete(e:Event):void {
playing = false;
}
}
}
Revision: 60417
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 7, 2012 20:06 by hejaaa
Initial Code
// EXAMPLE /////////////////////////////////
const BACKGROUND_MUSIC:string = "sound.BackgroundMusic";
const OVER_BUTTON:string = "sound.OverButton";
const OUT_BUTTON:string = "sound.OutButton";
SoundFX.play(BACKGROUND_MUSIC);
button1.addEventListener(MouseEvent.MOUSE_OVER, button1Over);
button1.addEventListener(MouseEvent.ROLL_OUT, button1Out);
private function button1Over(e:MouseEvent):void {
SoundFX.play(OVER_BUTTON, false);
}
private function button1Out(e:MouseEvent):void {
SoundFX.stop(OUT_BUTTON);
}
////////////////////////////////////////////
package com.sound{
import flash.media.*;
import flash.events.*;
import flash.utils.getDefinitionByName;
/**
* @author FCI
*/
public class SoundFX {
protected static var playing:Boolean;
protected static var dic:Object = {};
/**
* @param soundID nazov CLASS s kompletnou cestou
*/
public static function stop(soundID:String):void {
if(dic[soundID]){
dic[soundID].stop();
dic[soundID].removeEventListener(Event.SOUND_COMPLETE, playComplete);
dic[soundID] = null;
playing = false;
}
}
/**
* @param soundID nazov CLASS s kompletnou cestou
* @param parallel prehra aj pocas spustenej skladby
* @param volume hlasitost
* @param loops pocet opakovani
*/
public static function play(soundID:String, parallel:Boolean = true, volume:Number = 1, loops:int = 0):void {
if ((parallel) || (!parallel && !playing)) {
var soundClass:Class;
var sound:Sound;
var channel:SoundChannel;
soundClass = getDefinitionByName(soundID) as Class;
sound = new soundClass();
channel = sound.play(0, loops, new SoundTransform(volume));
dic[soundID] = channel;
if(!parallel){
channel.addEventListener(Event.SOUND_COMPLETE, playComplete);
playing = true;
}
}
}
protected static function playComplete(e:Event):void {
playing = false;
}
}
}
Initial URL
Initial Description
this Class can play sound from url or library in one parameter
Initial Title
universal class for playing sound
Initial Tags
Initial Language
ActionScript 3