protótipo funciona de funções personalizadas
-
21-09-2019 - |
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.
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:
- não é seguro do tipo
- mau desempenho
- 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.