Pergunta

É um Senario complicado para mim.

Eu tenho um singleton de gerenciamento de som com um ativo como o dicionário armazenando todas as referências aos meus URLs e ativos e a gargalhada dentro dele-

Eu tenho uma função chamada addItem(id:String, url:String):Object

Eu adoraria fazer algo semelhante como soundManager.addItem(id:String, url:String).play() ou soundManager.addItem(id:String, url:String).stop() dos quais ambos adicionarão meu item ao meu dicionário e começarão a tocar o som

Atualmente eu faço soundManager.addItem(id:String, url:String)então soundManager.play('myID').

Meu ativo sonoro é um objeto que contém alguns bits, como som, canal sonoro, correção sonora, URL e outras partes descritivas.

Eu sei que será prototipagem - eu apenas fico com o Uber quando preciso prototipar minhas funções e objetos personalizados.

desde já, obrigado


conclusão:

Bem, eu fiz o AutoPlay, como mencionado em minha resposta aceita.

Eu também fiz algo bem legal do que eu gosto da aparência.

Eu crio uma classe SoundManager, da qual lida e usa um objeto SoundObject que contém o SondTransform, SoundChannel e qualquer outra coisa necessária.

Dessa forma, quando eu adiciono um item ao SoundManager, ele sempre retornará a classe SoundObject que incorpora toda a play (), pausa (), volume (), posição () que eu preciso.

É realmente muito útil e eu já usei em 4 projetos! Yey.

Obrigado rapazes por sua ajuda.

Foi útil?

Solução

Se você está olhando para o código, então:

soundManager.addItem(url:String)

está retornando um objeto (que você acabou de adicionar), que está recebendo o play() comando. Você tem algumas opções fáceis nisso.

1) Se você sempre tocar o som, basta adicionar o comando ao addItem() função.

2) Se você deseja fazer exatamente o que tem lá, precisa fazer uma classe adequada para o objeto sonoro com uma função play (). Provavelmente um que despacha um evento para o SoundManager que muda o som.

3) Adicione um booleano à declaração Add que é uma função de referência automática, algo como:

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

Outras dicas

O que exatamente você quer dizer com "prototipagem"? Você quer dizer adicionar métodos personalizados a um objeto de prototyp de classes em tempo de execução? Embora ainda seja possível, isso não é mais prática comum no AS3 pelos seguintes motivos:

  1. não é seguro do tipo
  2. mau desempenho
  3. Raramente tem vantagem sobre a subclasse.

Além disso, você deve escolher uma assinatura de método para additem. Você listou 3. Isso é um pouco confuso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top