Apache flex 如何确定何时将方法或属性添加到Flash player或Flex SDK类?

Apache flex 如何确定何时将方法或属性添加到Flash player或Flex SDK类?,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,我最近发现FlexBuilder抱怨的方法()可能未定义;然而,该方法实际上在Flex LiveDocs中有文档记录。它必须是在SDK的更新版本中添加的,而不是我安装的版本。我不是在问这个特殊的方法,但我把它作为我试图解决的文档问题的一个例子。我的问题是: 如何确定添加了方法或属性的SDK或Flash player的版本 我如何判断哪些Flash player版本支持哪些SDK版本 我希望能够从文档中确定需要哪些SDK和Flash player版本来支持新添加的方法,而不是编译器或运行时错误 在

我最近发现FlexBuilder抱怨的方法()可能未定义;然而,该方法实际上在Flex LiveDocs中有文档记录。它必须是在SDK的更新版本中添加的,而不是我安装的版本。我不是在问这个特殊的方法,但我把它作为我试图解决的文档问题的一个例子。我的问题是:

  • 如何确定添加了方法或属性的SDK或Flash player的版本
  • 我如何判断哪些Flash player版本支持哪些SDK版本
  • 我希望能够从文档中确定需要哪些SDK和Flash player版本来支持新添加的方法,而不是编译器或运行时错误


    在Java中,当我需要知道这一点时,我会查找@since javadoc标记,但在Flex文档中找不到等效的功能。

    ByteArray是一个Flash播放器类,而不是Flex类。FlashPlayer API是在运行时实现的,因此它们与FlashPlayer的特定版本相关联。通常,ASDoc指定添加API的时间。但在这种情况下,似乎不是这样。因此,这里有一些事情可以尝试:

  • 避开编译器错误(如果您使用的是没有clear方法的FP版本,则可能会导致运行时错误):
    byteArray['clear']()
  • 将Flex中使用的FP版本更改为10,以查看是否在FP 10中添加了该版本,以及是否由于ASDoc中未指定的某些原因
  • Flex使用playerglobal.swc文件作为FP API的存根。SWC可能没有包含它应该包含的内容。在这种情况下,你应该这样做

  • ByteArray是一个Flash播放器类,而不是Flex类。FlashPlayer API是在运行时实现的,因此它们与FlashPlayer的特定版本相关联。通常,ASDoc指定添加API的时间。但在这种情况下,似乎不是这样。因此,这里有一些事情可以尝试:

  • 避开编译器错误(如果您使用的是没有clear方法的FP版本,则可能会导致运行时错误):
    byteArray['clear']()
  • 将Flex中使用的FP版本更改为10,以查看是否在FP 10中添加了该版本,以及是否由于ASDoc中未指定的某些原因
  • Flex使用playerglobal.swc文件作为FP API的存根。SWC可能没有包含它应该包含的内容。在这种情况下,你应该这样做

  • 通常,文档会说,从Flashplayer版本x.y.z开始,给定的属性是可用的,尽管您可能正在查看文档,文档可能会声称存在函数(在ByteArray的情况下,最肯定的是确实存在),有时编译器只是有缺陷,会发出嘶嘶声

    您最好的选择是确保您拥有最新版本的Flex开发工具包,并确保您发布的是最新的主要版本(Flash>=10)。要做到这一点,请参考以下文档:


    之后就是“交叉手指祈祷”的方法。很抱歉。

    通常,文档会说从Flashplayer版本x.y.z起,给定的属性是可用的,尽管您可能正在查看文档,文档可能会声称存在函数(在ByteArray的情况下,最肯定的是确实存在),有时编译器只是有缺陷,会发出嘶嘶声

    您最好的选择是确保您拥有最新版本的Flex开发工具包,并确保您发布的是最新的主要版本(Flash>=10)。要做到这一点,请参考以下文档:


    之后就是“交叉手指祈祷”的方法。抱歉。

    根据James的建议,您可以使用以下代码:

            try
            {
                // Use the clear method if the flash player supports it (10+)
                this.swf['clear']();
            }
            catch (e:Error)
            {
                // Must be flash player 9 or lower so free the variable
                this.swf = new ByteArray();
            }
    

    在较旧的播放器版本中,可能有更好的方法来清除/释放ByteArray的内存,因此请告诉我是否有。

    根据James的建议,您可以使用以下代码:

            try
            {
                // Use the clear method if the flash player supports it (10+)
                this.swf['clear']();
            }
            catch (e:Error)
            {
                // Must be flash player 9 or lower so free the variable
                this.swf = new ByteArray();
            }
    

    在较旧的播放器版本中,可能有更好的方法来清除/释放ByteArray的内存,因此如果有,请告诉我。

    感谢为ByteArray提供的有用的解决方法信息。我编辑了我的问题,以便更清楚地表明我的重点是找到正确的文档。另外,感谢您指出我需要了解Flash Player和SDK版本信息,我也将这些信息添加到了问题中。酷。除了查看开源FlexSDK的SVN之外,我不知道有什么好方法可以发现这些东西。也许这是一个很好的功能请求文件?感谢为ByteArray提供的有用的解决方法信息。我编辑了我的问题,以便更清楚地表明我的重点是找到正确的文档。另外,感谢您指出我需要了解Flash Player和SDK版本信息,我也将这些信息添加到了问题中。酷。除了查看开源FlexSDK的SVN之外,我不知道有什么好方法可以发现这些东西。也许这是一个很好的特性请求文件?问题是文档中没有说明它在特定版本中可用。当您需要支持旧版本(本例中为9)时,发布最新版本的Flash不是一个选项。我很难找到一个示例,但我知道我看到了10.2中存在的一些属性,而10.1中没有这些属性。我的一般性陈述仍然有效,你真的必须使用“我希望”的方法。但是,如果你想要的话,Flash player 9文档就在这里:手动比较不一定会让你的任务变得简单,但至少会让事情变得不那么烦人。我没想过看Flash 9文档。从Flash 9文档中查看ByteArray,它没有clear()方法。感谢您提供到旧文档的链接。这证实了t