![](/img/trans.png)
[英]Call to a possibly undefined method through a reference with static type Class
[英]Call to a possibly undefined method '' through a reference with static type Class
我在Flash Professional中制作了小的.fla文件,並在Flash Professional中添加了.as(動作腳本文件),並且在.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!");
}
但是我收到以下錯誤:
通過靜態類型為Class的引用調用可能未定義的setFirstBag方法。
我該怎么辦?
.as文件和.fla文件位於同一文件夾中。
如果我將Bag類更改為static。 錯誤將是這樣的:
靜態屬性只能用於類內部的定義。
非常感謝您的回答!
謝謝!
您正在使用get方法,就像它是個方法,但是thay是屬性的訪問者,因此涉及以下方面:
Bag.setFirstBag("First slot in the bag has been filled up!");
采用
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,或者您可能更喜歡它,但是從您發布的代碼中,您可以定義一個public static var
來執行相同的操作。 (如果這樣做了,因為公共API保持不變,因此如果需要一些副作用邏輯,將其重構為getter / setter將是微不足道的。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.