прототип функции от пользовательских функций - PullRequest
0 голосов
/ 19 марта 2010

Для меня это сложный сенарио.

У меня есть синглтон управления звуком с активом, таким как словарь, в котором хранятся все ссылки на мои URL-адреса и ресурсы, и внутри него -

У меня естьфункция под названием addItem(id:String, url:String):Object

Я хотел бы сделать что-то похожее на soundManager.addItem(id:String, url:String).play() или soundManager.addItem(id:String, url:String).stop(), из-за которого он одновременно добавит мой элемент в мой словарь и начнет воспроизводить звук

В настоящее время я делаю soundManager.addItem(id:String, url:String), затем soundManager.play('myID').

Мой звуковой актив - это объект, содержащий несколько битов, таких как Sound, SoundChannel, SoundTransform, URL и некоторые другие не описанные части.

Я знаюэто будет прототипирование - я просто застреваю, когда мне нужно прототипировать мои пользовательские функции и объекты.

Заранее спасибо


заключение:

Ну, ясделал автозапуск, как упомянуто в моем принятом ответе.

Я также сделал кое-что довольно крутое, мне нравится внешний вид.

Я создаю класс SoundManager, который обрабатывает и использует SoundObject изкоторые содержатs SoundTransform, SoundChannel и все, что требуется для звукового объекта.

Таким образом, когда я добавляю элемент в SoundManager, он всегда возвращает класс SoundObject, который включает в себя все play (), pause (), громкость (), position () Мне нужно.

Это действительно очень полезно, и я уже использовал его на 4 проектах!Yey.

Спасибо, ребята, за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 19 марта 2010

если вы смотрите на код, то:

soundManager.addItem(url:String)

возвращает объект (который вы только что добавили), которому затем дается команда play(). у вас есть несколько простых вариантов в этом.

1) если вы всегда воспроизводите звук, просто добавьте команду в функцию addItem().

2) если вы хотите делать именно то, что у вас есть, вам нужно создать правильный класс для звукового объекта с функцией play (). вероятно, тот, который отправляет событие в soundManager, который затем переключает звук.

3) добавить логическое выражение для оператора add, которое является функцией автозапуска, что-то вроде:

addItem(value:*, autoPlay:Boolean = false):Object{
if(autoplay) play()
}
0 голосов
/ 19 марта 2010

что именно вы подразумеваете под "прототипированием"? Вы имеете в виду добавление пользовательских методов к объекту прототипа классов во время выполнения? хотя все еще возможно, это больше не является обычной практикой в ​​AS3 по следующим причинам:

  1. небезопасно
  2. плохая производительность
  3. редко имеет какое-либо преимущество перед подклассами.

также, вы должны выбрать одну сигнатуру метода для addItem. Вы перечислили 3. это немного сбивает с толку.

...