AS3中“ World”是否保留类名?

问题描述 投票:4回答:6

有人知道关于“ World”被保留或以该名称建造的类吗?当我尝试构造我创建的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 ..

actionscript-3 flash reserved-words class-names
6个回答
4
投票

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

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

丑陋,但是可行!


1
投票

您必须在源代码路径中的某个位置有另一个名为World的类。看你的进口。

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

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

1
投票

其他几种可能性:

您是否正在使用Flex / FlashBuilder,并导入SWC?那些可以公开类而不公开源代码。

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

[另一种可能性是您正在使用的Flash编译器(无论是FlashPro还是FlashBuilder)都没有正确地缓存您之前创建的类定义。我之前几次遇到此错误。尝试执行项目/清理(在FlashBuilder中),或者,如果您不顾一切,则创建一个新项目。


0
投票

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

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

package com.myworld
{
    public class World
    {
        public function World(parameter1:int = null, parameter2:String = null ) 
        {

        }
    }
}

0
投票

这很麻烦,但是请尝试删除ASO文件(“控制”>“删除ASO文件”并重新编译。)>

如果那行不通,我建议的另一件事是重建项目,每次导入一个或一组类时都要测试此问题。这种方法应保证您至少找到问题的根源。


0
投票

我只是亲自检查一下,即使那是一个已经被回答的旧帖子。原因是我找到了此帖子,是因为搜索了AS3中的保留关键字列表。

© www.soinside.com 2019 - 2024. All rights reserved.