簡體   English   中英

通過靜態類型為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM