“世界”是 AS3 中的保留类名称吗?

Posted

技术标签:

【中文标题】“世界”是 AS3 中的保留类名称吗?【英文标题】:Is "World" reserved Class name in AS3? 【发布时间】:2011-05-11 08:49:43 【问题描述】:

有没有人知道“世界”被保留或以该名称内置在类中? 当我尝试构建我创建的 World 类时,它会引发编译错误:

1136: Incorrect number of arguments.  Expected 2.

但是我已经检查了百万次,根本没有预期的参数,所有包命名,变量类型..一切都是正确的,但它抛出了那个愚蠢的错误。 :/ 自己尝试一下,你会发现它确实如此......还是我很愚蠢?

当我尝试在 World 类中调用 init 函数时,它会抛出这个:

1061: Call to a possibly undefined method init through a reference with static type World.

Grr..

【问题讨论】:

尝试将类名更改为其他名称,看看同样的问题是否仍然存在。 试过了,它可以使用不同的名称。 :] 但我想要那个“世界”的名字。 :D 这当然是个谜,这会更好理解。但如果它有帮助,我可信赖的词库已经返回了这些潜在的替代品:地球、地球、行星、球体、月亮、星星、天体、球体、社会、圈子、竞技场、环境、省、域、轨道、保存、领域、领域、学科、地区、部门、每个人、每个人、人、人类、公众、人口。 不!哈哈。我真的想提供帮助。我经常回去重命名我的类和变量,因为我想到或使用同义词库来研究更合适的标题。 这来晚了,因为我今天早些时候第一次遇到这个问题。我分解了默认 as3 CS5 包含路径中的库,结果发现 World 是与 fl.ik 包关联的***类;用于管理骨架动画的逆运动学库。希望这可以帮助。 World 类位于 ik.swc。 【参考方案1】:

我也遇到过同样的问题。我认为它是从 FlashPlayer 10 开始保留的(可能是 10.1,但不能确定)。在引用我的 World 类时,我必须使用我的完整包名来解决这个问题。

var myWorld:com.foo.World = new com.foo.World();

丑陋,但它有效!

【讨论】:

+1 是的,我也遇到过这个问题。我的游戏在 CS4 上为 Flash Player 10 编译得很好,但后来在用 CS5 编译时我收到了编译错误。我认为那一定是 10.1 的问题?【参考方案2】:

您的源路径中的某处必须有另一个名为 World 的类。看看你的进口。

如有必要,请输入完整的包路径以避免与其他地方的另一个 World 类混淆:

var w:my.package.World = new my.package.World();

【讨论】:

不,没有其他世界级。一切 - 进口,包装......一切都是正确的。 好吧,在新文档中创建一个新的世界对象 (new World();) 会引发错误,指出它找不到类,所以它一定是您正在导入的东西。跨度> 【参考方案3】:

其他几种可能性:

您是否在使用 Flex/FlashBuilder 并导入 SWC?那些可以在不泄露源代码的情况下公开类。

或者您是从 FLA 编译的?在这种情况下,可能存在导出到名称与您的名称冲突的 ActionScript 类的库符号。

另一种可能是您使用的 Flash 编译器(无论是 FlashPro 还是 FlashBuilder)不正确地缓存了您之前创建的类定义。我之前已经经历过几次这个错误。尝试进行项目/清理(在 FlashBuilder 中),或者,如果您不顾一切,可以创建一个新项目。

【讨论】:

嗯,没有。使用 flash cs5 进行编码。没有图书馆项目有这个类名。【参考方案4】:

我认为您应该检查构造函数中所需的参数,并通过将 = null 或其他内容传递给构造函数来使它们成为可选参数。

当您从库中放置一个在构造函数中具有所需参数的符号时,可能会发生此“错误”。

package com.myworld

    public class World
    
        public function World(parameter1:int = null, parameter2:String = null ) 
        

        
    

【讨论】:

【参考方案5】:

这有点牵强,但请尝试删除您的 ASO 文件(控制 > 删除 ASO 文件)并重新编译。

如果这不起作用,我建议的唯一另一件事是重建您的项目,每次导入一个或一组类时测试这个问题。这种方法应该可以保证您至少找到问题的根源。

以下文档类在面向 Flash Player 10.1.53.64 (10.1) 的 Adob​​e Flash CS5 中对我来说完全可以编译和执行:

package

import flash.display.Sprite;
import flash.events.Event;

public class World extends Sprite
    
    public function World()
        
        addEventListener(Event.ADDED_TO_STAGE, init);
        

    private function init(evt:Event):void
        
        removeEventListener(Event.ADDED_TO_STAGE, init);
        trace("World Document Added To Stage");
        
    

【讨论】:

【参考方案6】:

我只是自己检查它,即使它是一个已经回答的旧帖子。 原因是我通过搜索AS3中的保留关键字列表找到了这篇文章。

“世界”关键字未保留 :) 哎呀...

这是我目前在 AS3 中找到的带有保留字/关键字的列表: 如果您编辑此列表,请发表评论/提供来源... THX 有时同一个关键字可能会在不同类别下的列表中出现两次...

0   :   abstract        (future keyword)
1   :   as              (reserved keyword)
2   :   boolean         (future keyword)
3   :   break           (reserved keyword)
4   :   byte            (future keyword)
5   :   case            (reserved keyword)
6   :   cast            (future keyword)
7   :   catch           (reserved keyword)
8   :   char            (future keyword)
9   :   class           (reserved keyword)
10  :   const           (reserved keyword)
11  :   continue        (reserved keyword)
12  :   debugger        (future keyword)
13  :   default         (reserved keyword)
14  :   delete          (reserved keyword)
15  :   do              (reserved keyword)
16  :   double          (future keyword)
17  :   dynamic         (syntactic keyword)
18  :   each            (syntactic keyword)
19  :   else            (reserved keyword)
20  :   enum            (future keyword)
21  :   export          (future keyword)
22  :   extends         (reserved keyword)
23  :   false           (reserved keyword)
24  :   final           (syntactic keyword)
25  :   finally         (reserved keyword)
26  :   float           (future keyword)
27  :   for             (reserved keyword)
28  :   function        (reserved keyword)
29  :   get             (syntactic keyword)
30  :   goto            (future keyword)
31  :   if              (reserved keyword)
32  :   implements      (reserved keyword)
33  :   import          (reserved keyword)
34  :   in              (reserved keyword)
35  :   include         (syntactic keyword)
36  :   instanceof      (reserved keyword)
37  :   interface       (reserved keyword)
38  :   internal        (reserved keyword)
39  :   intrinsic       (future keyword)
40  :   is              (reserved keyword)
41  :   long            (future keyword)
42  :   namespace       (syntactic keyword)
43  :   native          (reserved keyword)
44  :   native          (syntactic keyword)
45  :   new             (reserved keyword)
46  :   null            (reserved keyword)
47  :   override        (syntactic keyword)
48  :   package         (reserved keyword)
49  :   private         (reserved keyword)
50  :   protected       (reserved keyword)
51  :   prototype       (future keyword)
52  :   public          (reserved keyword)
53  :   return          (reserved keyword)
54  :   set             (syntactic keyword)
55  :   short           (future keyword)
56  :   static          (syntactic keyword)
57  :   super           (reserved keyword)
58  :   switch          (reserved keyword)
59  :   synchronized    (future keyword)
60  :   this            (reserved keyword)
61  :   throw           (reserved keyword)
62  :   throws          (future keyword)
63  :   to              (future keyword)
64  :   to              (reserved keyword)
65  :   transient       (future keyword)
66  :   true            (reserved keyword)
67  :   try             (reserved keyword)
68  :   type            (future keyword)
69  :   typeof          (reserved keyword)
70  :   use             (reserved keyword)
71  :   var             (reserved keyword)
72  :   virtual         (future keyword)
73  :   void            (reserved keyword)
74  :   volatile        (future keyword)
75  :   while           (reserved keyword)
76  :   with            (reserved keyword)

这里有 3 个关键字数组:

private static var reserved:Array = [
                          "as","break","case","catch","class","const","continue","default","delete",
                          "do","else","extends","false","finally","for","function","if","implements",
                          "import","in","instanceof","interface","internal","is","native","new","null",
                          "package","private","protected","public","return","super","switch","this",
                          "throw","to","true","try","typeof","use","var","void","while","with"
                          ];
private static var syntactic:Array = [
                           "each","get","set","namespace","include","dynamic","final","native","override","static"
                           ];
private static var future:Array = [
                        "abstract","boolean","byte","cast","char","debugger","double","enum","export","float",
                        "goto","intrinsic","long","prototype","short","synchronized","throws","to","transient",
                        "type","virtual","volatile"
                        ]

【讨论】:

以上是关于“世界”是 AS3 中的保留类名称吗?的主要内容,如果未能解决你的问题,请参考以下文章

类名数组 AS3

ActionScript 3 AS3按类名获取类引用

AS3通过类名获取类引用

ActionScript 3 AS3字符串到类名getDefinitionByName

在 As3 中创建具有类名字符串的实例

ProGuard 保留类名但更改包名