Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 调用可能未定义的方法'';通过对静态类型类的引用_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 调用可能未定义的方法'';通过对静态类型类的引用

Actionscript 3 调用可能未定义的方法'';通过对静态类型类的引用,actionscript-3,flash,Actionscript 3,Flash,我在Flash Professional中创建了一个小的.fla文件,在Flash Professional中添加了.as(ActionScript文件),我在.as(ActionScript文件)中添加了一些类似下面的代码,但是出现了错误,我正在尝试解决它,但无法解决,所以我决定将其发布在这里 package { import flash.display.MovieClip; public class Bag extends MovieClip { s

我在Flash Professional中创建了一个小的.fla文件,在Flash Professional中添加了.as(ActionScript文件),我在.as(ActionScript文件)中添加了一些类似下面的代码,但是出现了错误,我正在尝试解决它,但无法解决,所以我决定将其发布在这里

package
{
    import flash.display.MovieClip;

    public class Bag extends MovieClip
    {
        static var firstBag:String;

        public static function set setFirstBag(value:String):void
        {
            firstBag = value;
        }

        public static function get getFirstBag():String
        {
            return firstBag;
        }
    }
}
我这样称呼它:

button1.addEventListener(MouseEvent.CLICK, onClickFirstButton);

function onClickFirstButton(e:MouseEvent):void
{
   Bag.setFirstBag("First slot in the bag has been filled up!");
}
但我收到了以下错误:

通过引用调用可能未定义的方法setFirstBag 使用静态类型类

我会做错什么

.as文件和.fla文件位于同一文件夹中

如果我将Bag类更改为static。错误如下所示:

button1.addEventListener(MouseEvent.CLICK, onClickFirstButton);

function onClickFirstButton(e:MouseEvent):void
{
   Bag.setFirstBag("First slot in the bag has been filled up!");
}
static属性只能用于类内的定义

非常感谢你的回答


谢谢大家!

您正在使用get-like它是一个mettod,但它们都是属性的访问器,因此:

Bag.setFirstBag("First slot in the bag has been filled up!");
使用


还有一些想法

虽然在语法上是有效的,但是getter和setter的定义和命名是混乱和非典型的,我认为这导致了您对行为的困惑。实际上,您已经定义了两个单独的属性,一个是只读的(“setFirstBag”),另一个是只读的(“getFirstBag”)。通常,您将getter/setter定义为相同的属性(例如“firstBag”),并且在属性名称中没有任何“get”或“set”,因为这是getter/setter为您定义的。例如:

private static var _firstBag:String;
public static function get firstBag():String {
    return _firstBag:
}
public static function set firstBag(value:String):void {
    _firstBag = value;
}

// usage
Bag.firstBag = "stuff";
trace(Bag.firstBag); // "stuff"
此外,您可能有很好的理由在这里使用getter/setter,或者您可能更喜欢它,但是从您发布的代码中,您可以定义一个
公共静态var
,来做同样的事情。(如果您这样做了,那么如果您需要一些副作用逻辑,重构为getter/setter将是微不足道的,因为公共API保持不变。)