对我来说这是一个复杂的场景。
我有一个声音管理单例,其中有一个像字典这样的资源,存储了我的网址和资产的所有依据以及内部的guff -
我有一个名为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和Sound对象所需的任何其他内容。
这样当我将一个项目添加到SoundManager时,它将始终返回包含我需要的所有play(),pause(),volume(),position()的SoundObject类。
它非常有用,我已经在4个项目中使用过了! Yey。
谢谢你的帮助。
答案 0 :(得分:0)
“原型设计”究竟是什么意思?你的意思是在运行时向类原型对象添加自定义方法吗?虽然仍有可能,但由于以下原因,这在AS3中已不再常见:
另外,您应该为addItem选择一个方法签名。你列出了3.这有点令人困惑。
答案 1 :(得分:0)
如果您正在查看代码:
soundManager.addItem(url:String)
返回一个对象(您刚添加的对象),然后被赋予play()
命令。你有几个简单的选择。
1)如果你总是播放声音,那么你只需将命令添加到addItem()
功能中。
2)如果你想完全按照那里的那样做,那么你需要用play()函数为声音对象做一个合适的类。可能是一个将事件发送到soundManager然后切换声音的人。
3)在add语句中添加一个布尔值,这是一个自动播放函数,如:
addItem(value:*, autoPlay:Boolean = false):Object{
if(autoplay) play()
}