我如何拒绝使用flash/flex公开的javascript函数?

我如何拒绝使用flash/flex公开的javascript函数?,javascript,flash,apache-flex,actionscript,externalinterface,Javascript,Flash,Apache Flex,Actionscript,Externalinterface,我们开发了一个flex组件,现在已经被几个web应用程序使用。 我们发现一些回调是旧的,并且它们有不好的参数。 例如,当它们用于设置某些参数时,它们使用一个对象,而当它们获得相同的参数时,它们使用另一个对象。 我们希望使这些函数在设置和获取参数时保持一致。 所以我们想开始开发新的getter和setter,使用新的名称和正确的参数。 无论如何,由于该组件被许多其他应用程序使用,我们无法重命名回调,也无法更改其实现,因此其他web应用程序可能会出现问题。 因此,我们想知道是否有某种方法可以使fla

我们开发了一个flex组件,现在已经被几个web应用程序使用。 我们发现一些回调是旧的,并且它们有不好的参数。 例如,当它们用于设置某些参数时,它们使用一个对象,而当它们获得相同的参数时,它们使用另一个对象。 我们希望使这些函数在设置和获取参数时保持一致。 所以我们想开始开发新的getter和setter,使用新的名称和正确的参数。 无论如何,由于该组件被许多其他应用程序使用,我们无法重命名回调,也无法更改其实现,因此其他web应用程序可能会出现问题。 因此,我们想知道是否有某种方法可以使flash公开回调不受欢迎,这样使用这些方法的人将看到一些警告,并开始用未受欢迎的版本进行替换。
提前感谢您的回答

一旦成为API,就永远是API

你不能仅仅从API中删除东西,否则当前使用这些命令的应用程序将失败。只需添加新的替换API并保留旧的API即可。在文档中声明旧的已弃用,并且有更好的命令

jQuery的
live()
delegate()
就是一个例子,它被
on()
取代。尽管已弃用,
live()
delegate()
仍然存在于1.7上,以适应旧的API,特别是那些升级了库但使用了过时的、未维护的插件的用户


你也可以这样做。您可以为旧API显示相同的接口,但在它下面,它使用了新的API实现,但稍作修改。这样,您就不会重复代码

例如,让我们以jQuery
delegate()
live()
on()
为例。这些不是这些方法的实际代码,但我追求的是弃用的概念(除了
delegate()
live()
on()
)之外,我想不出其他弃用的例子)


有几件事不清楚:

  • 谁在构建代码的Flash端?使用该组件的人,或者他们是否编译了该组件,却不知道其中的内容

  • 观众的总体悟性如何

  • 使用组件构建的应用程序的一般生命周期是多少。您是否明确了版本策略

  • IMO:(意思是这只是我的观点,不是绝对的事实,这种方法对于Linux开发更为典型,但对于Windows来说是可怕的/不典型的)

    现在,如果你的用户正在构建你的代码,我会说,对于2-3个次要版本的发行版,直接使用
    [Deprecated()]
    meta,然后将其删除,当然不要将其拖到主要版本的发行版中。如果您有带宽的话,最好对旧版本提供一些支持,可能还有发布补丁,但改进更为重要。某些策略可能会有所帮助。例如,如果用户接触到测试版产品,他们将更有可能更快地采用更改

    如果你的受众大多是精明的/有良好的社区沟通能力,可能一个次要版本就足够了——最坏的情况是,旧的兼容版本几乎没有留下什么。同样,如果你有旧版本的补丁也不错,但是你会因为使用了错误的API而束手无策,过了一段时间,由于那个API,你的用户会认为你的应用程序是过时的垃圾,这会使他们无法使用他们更愿意更改的东西


    仅保证次要版本之间的一致性非常重要。当然,如果您可以保留向后兼容的多个版本,这是一件好事,但这是一个额外的好处,而不是要求。虽然从表面上看,使用您产品的其他人可能不愿意接受更改,但另一种选择更糟糕。应该有一些合理的时间,适合您提供支持的平均应用程序生命周期。一些东西不会让一个普通的应用程序在使用之前就过时,但所有的东西都要适度。

    因此,我们认为除了在文档中编写之外,没有一种合适的方法来做到这一点。我将等待,看看是否有一些创造性的想法,收集自动反对意见。感谢您与jQuery进行有趣的比较!我想你可以考虑在浏览器控制台上记录一个警告,告诉那些不使用RTFM的人,这个方法现在已经被弃用。嗯,我认为你的想法很好,但是我需要这些信息,因为函数应该返回一个不同的对象,所以我不能在遗留方法中隐藏新的函数。无论如何,谢谢你的帮助!:)嗯,你部分回答了我的问题,但我认为最后你的意见是有用的。我将回答你的问题:1。我正在构建flex代码,其他人应该通过javascript API使用它。2.观众是由程序员组成的。3.应用程序的生命周期不短,到目前为止,该组件已经从2009年开始使用,无论如何,我没有制作它的初始版本,但我不得不在过去更改该组件,并开发了一些功能。
    //the three have different set-ups
    .live(event,callback);
    .delegate(selector,event,callback);
    .on(event,selector,callback);
    
    //to avoid multiple underlying implementations
    //you can "map" the old API to use the new API's implementation
    //while maintaining the old interface and functionality
    live = function(event,callback){
        $(document).on(event,callback);
    }
    delegate = function(selector,event,callback){
        $(this).on(event,selector,callback);
    }
    
    //the new implementation as used by on
    on = function(event,selector,callback){
        //implementation
    }