Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daisy Monte

[Resolvido] instanciar multiplos sons

Recommended Posts

Olá galera,

 

Sou nova em as3 e estou batendo a cabeça com algo que acredito ser simples =/

Basicamente o que eu preciso fazer é instanciar vários sons:

 

var sound:Sound;

sound = new snd_ball_1();

sound = new snd_ball_2();

sound = new snd_ball_3();

. = .

. = .

. = .

sound = new snd_ball_93();

 

 

o problema é e que eu tenho 93 sons e gostaria de fazer isso dinâmicamente...

A idéia seria mais ou menos essa:

 

var qt_balls:int = 93;

var vet_sounds:Array = new Array();

var sound_name:String = 'snd_ball_';

var meu_som:String = '';

var sound:Sound;

 

for(var x:int= 0; x< qt_balls;x++){

meu_som = sound_name +(x+1).toString();

sound = new meu_som;

vet_sounds[x] = sound;

}

 

Eu sei que 'sound' só aceitará objetos do tipo Sound e que no exemplo to enviando uma String

Mas é que eu realmente não sei como fazer isso...hehehe

Já procurei e tentei várias soluções, mas agora já não faço mais idéia do que tentar... =S

 

Se alguém puder me dar alguma ajuda, agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daisy tente fazer a play list por xml

 

código para ler o arquivo xml no AS3

mp3_player.carrega_xml("lista_de_musica.xml");

 

 

crie 1 arquivo no bloco de notas e salve como lista_de_musica.xml

<?xml version="1.0" encoding="UTF-8"?>

<musicas>

 

<musica>

<faixa>Nome Da Musica 1</faixa>

<artista>Artist Um</artista>

<url>pastademusica/nomedamusica.mp3</url>

</musica>

 

<musica>

<faixa>Nome Da Musica 2</faixa>

<artista>Artist Dois</artista>

<url>pastademusica/nomedamusica2.mp3</url>

</musica>

</musicas>

 

cada musica que quiser adicionar deve estar em "pastademusica/..." e basta adicionar os campos que desejar este é apenas exemplo de 2 musicas para inserir 999 musicas repita:

 

<musica>

<faixa>Nome Da Musica 1</faixa>

<artista>Artist Um</artista>

<url>pastademusica/nomedamusica.mp3</url>

</musica> 999 vezes entendeu?

 

Eu coloquei as strings "faixa",artista,url mas você pode alterar ao seu gosto é só um exemplo mesmo =_)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oláá!

Então, eu até tentei fazer desta forma, mas aí eu ia cair na mesma sina, de digitar o nome de cada música de cada vez, em vez de fazer isso dinamicamente. A única diferença é que eu ia carregar um xml, em vez de um objeto...

 

Felizmente, eu consegui encontrar uma outra maneira de fazer...

O pior é que quando a gente encontra, o negócio fica tão óbvio que da até raiva hehehe

 

De qualquer maneira, muito obrigada!

Eu realmente já estava arrancando os cabelos em busca de uma solução, me recusava a escrever o negócio 90 vezes... rsrs

 

Vou postar aqui pra quem tiver interesse:

 

package
{	

import flash.media.Sound;
import flash.media.SoundChannel;

[sWF(width=1024, height=768 , BackgroundColor = '0x000000',frameRate='24')]

public class TestSound
{	

	private var vet_ball_sounds:Array = new Array();	
	private var canal: SoundChannel = new SoundChannel();
	private var sound:Sound = new Sound();

	public  function TestSound() // Constructor - Entry point 
	{	
		var qt_balls:int = 90;
		//Sons do jogo
		for(var x:int = 0; x< qt_balls;x++){
			sound = new Sound(new URLRequest("sound/"+(x+1).toString()+ ".mp3"));
			vet_ball_sounds.push(sound);
		}

	}

	private function sound_ball_play(ball:int):void{

		canal = vet_ball_sounds[ball].play(0,1);
	}

}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que conseguiu. Só para nível de informação, para obter uma classe só com o seu nome, você precisa usar a função getDefinitionByName(). Veja um exemplo:

var classReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
var instance:Object = new classReference();

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.