2011-01-05 146 views
3

我与更新由外部承包商,并在ActionScript中创建Flex项目负责如下块:Actionscript 3/Flex中的双冒号('::')是什么意思?

CONFIG::FLASH_10_1 
{ 
    //Some code here 
} 

我从来没有见过这种类型的结构之前,我有赫克一段时间试图在Google上搜索它 - 我发现除了AS3之外,几乎所有的编程语言都意味着它的含义。任何人都可以对此有所了解吗?

+0

我也许应该补充,目前该项目在这条线,上面写着抛出一个错误:“1120:访问未定义的属性FLASH_10_1“ – TheOx 2011-01-05 19:01:24

回答

7

我敢肯定这与Flex编译器的conditional compilation功能有关。

所以,如果你添加一个编译器参数,如:

-define=CONFIG::FLASH_10_1 

我敢打赌,错误就会消失。

+0

就是这样!感谢每一位Flextras的答复和信息链接。实际上,我最终添加了-define = CONFIG:FLASH_10_1,true表示这是10.1的要求。 – TheOx 2011-01-05 19:19:52

+0

很高兴帮助!要明确一点,如果你希望你的应用程序定位到特定版本的Flash Player,我不认为有条件编译会这样做。您需要使用target-player命令行参数。 http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_14.html – JeffryHouser 2011-01-05 20:18:20

1

不是的Flex/AS3大师 - 关于“::”这个线程会谈被用作“命名空间访问”:

Thread on Actionscript FAQs

+0

感谢您的答案,但不幸的是,这适用于e4x和XML,而不是我正在寻找的构造。 – TheOx 2011-01-05 19:20:20

+0

对不起 - 希望它更有帮助。我想我会搜索一下,看看我能否想出任何东西 - 但希望Flextras解决了你的问题。 – 2011-01-05 19:21:35

+0

我很确定这也适用于AS3。例如,AS3'Vector。 'type实际上有一个运行时类型名称为__AS3 __。vec :: Vector。 ',其中'__AS3 __。vec'是自定义命名空间。您还可以为成员使用自定义名称空间,并使用语法object.custom_namespace :: membername在AS3中的对象上访问它们。 'public'和'private'是建立在命名空间中的,所以在技术上你可以像'var a:Array = [0,1];这样访问像'object.public :: membername'这样的公共成员。迹(a.public ::长度); //打印2' – Triynko 2013-12-04 19:39:06

3

虽然这是不一样的情况下,回答这个问题双冒号“::”在AS3中的含义......

它是一个名称空间访问器。

例如,AS3 Vector.<T>类型实际上具有运行时类型名称__AS3__.vec::Vector.<T>,其中__AS3__.vec是自定义名称空间。您还可以为成员使用自定义名称空间,并使用语法object.custom_namespace::membername在AS3中的对象上访问它们。 publicprivate是建立在命名空间,所以在技术上你可以访问公共成员一样object.public::membername,如:

var a:Array = [0,1]; 
trace(a.public::length); //prints 2