Actionscript 3 调用可能未定义的方法'';通过对静态类型类的引用
我在Flash Professional中创建了一个小的.fla文件,在Flash Professional中添加了.as(ActionScript文件),我在.as(ActionScript文件)中添加了一些类似下面的代码,但是出现了错误,我正在尝试解决它,但无法解决,所以我决定将其发布在这里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
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保持不变。)