функции прототипа без пользовательских функций
-
21-09-2019 - |
Вопрос
Для меня это сложный сценарий.
У меня есть синглтон для управления звуком с таким ресурсом, как словарь, в котором хранятся все ссылки на мои 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, который содержит SoundTransform, SoundChannel и все остальное, что требуется звуковому объекту.
Таким образом, когда я добавляю элемент в SoundManager, он всегда возвращает класс SoundObject, который включает в себя все необходимые мне функции play(), Pause(), Volume(), Position().
Это действительно очень полезно, и я уже использовал его в 4 проектах!Да.
Спасибо, ребята, за вашу помощь.
Решение
Если вы смотрите на код, то:
soundManager.addItem(url:String)
возвращает объект (который вы только что добавили), который затем дается play()
командование У вас есть несколько простых вариантов в этом.
1) Если вы всегда играете звук, то вы просто добавляете команду в addItem()
функция
2) Если вы хотите сделать именно то, что у вас есть, вам нужно сделать правильный класс для звукового объекта с функцией Play (). Вероятно, то, что отправляет событие на Soundmanager, которое затем переключает звук.
3) Добавьте логическое значение к оператору ADD, который является функцией автозаписи, что -то вроде:
addItem(value:*, autoPlay:Boolean = false):Object{
if(autoplay) play()
}
Другие советы
что именно вы подразумеваете под «прототипированием»?Вы имеете в виду добавление пользовательских методов к объекту прототипа классов во время выполнения?хотя это все еще возможно, это больше не является обычной практикой в AS3 по следующим причинам:
- не типобезопасен
- плохая производительность
- редко имеет какое-либо преимущество перед подклассами.
Кроме того, вам следует выбрать одну сигнатуру метода для addItem.ты перечислил 3.это немного сбивает с толку.