原型功能关闭自定义功能

时间:2010-03-19 11:40:33

标签: actionscript-3 audio function-prototypes

对我来说这是一个复杂的场景。

我有一个声音管理单例,其中有一个像字典这样的资源,存储了我的网址和资产的所有依据以及内部的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。

谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

“原型设计”究竟是什么意思?你的意思是在运行时向类原型对象添加自定义方法吗?虽然仍有可能,但由于以下原因,这在AS3中已不再常见:

  1. not type-safe
  2. 表现不佳
  3. 很少比子类化有任何优势。
  4. 另外,您应该为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()
}