代码之家  ›  专栏  ›  技术社区  ›  Glycerine

原型函数关闭自定义函数

  •  0
  • Glycerine  · 技术社区  · 15 年前

    对我来说这是一个复杂的赛纳里奥。

    我有一个健全的管理单件与资产一样的字典存储所有对我的网址和资产的引用,以及其中的哄骗。-

    我有一个函数 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') .

    我的声音资源是一个包含一些位的对象,比如声音、声音通道、声音转换、URL和其他一些无描述部分。

    我知道这将是原型——当我需要原型化我的自定义函数和对象时,我会被优步卡住。

    提前谢谢


    结论:

    嗯,我做了我接受的答案中提到的自动播放。

    我也做了一些很酷的事情,我喜欢它的样子。

    我创建了一个SoundManager类,其中处理并使用SoundObject,其中包含SoundTransform、SoundChannel和Sound对象所需的任何其他内容。

    这样,当我向SoundManager添加一个项时,它总是返回包含我需要的所有play()、pause()、volume()、position()的SoundObject类。

    它非常有用,我已经在4个项目中使用过了!是的。

    谢谢你们的帮助。

    2 回复  |  直到 11 年前
        1
  •  0
  •   longstaff    15 年前

    如果您正在查看代码,则:

    soundManager.addItem(url:String)
    

    返回一个对象(刚刚添加),然后 play() 命令。你有几个简单的选择。

    1)如果始终播放声音,则只需将命令添加到 addItem() 功能。

    2)如果你想做你所拥有的,那么你需要用play()函数为声音对象创建一个合适的类。可能是将事件发送给SoundManager,然后切换声音的事件。

    3)在add语句中添加一个布尔值,这是一个autoplay函数,类似于:

    addItem(value:*, autoPlay:Boolean = false):Object{
    if(autoplay) play()
    }
    
        2
  •  0
  •   Taryn Frank Pearson    11 年前

    “原型化”到底是什么意思?您的意思是在运行时向类原型对象添加自定义方法吗?尽管仍有可能,但由于以下原因,这已不再是AS3中的常见做法:

    1. 非类型安全
    2. 性能不好
    3. 与子类化相比,很少有任何优势。

    另外,您应该为additem选择一个方法签名。你列了3。有点困惑。