的東西是錯誤與我的封裝,但我不知道它是什麼:AS3爲什麼我用錯誤的方式使用get/getter?
我得到了名爲Main的文檔類綁定到舞臺:
package {
import flash.display.MovieClip;
public class Main extends MovieClip
{
var chapter1:Chapter1;
public function Main() {
// constructor code
chapter1 = new Chapter1;
addChild(chapter1);
}
}
}
綁定到一個影片剪輯一個第一章類:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Chapter1 extends MovieClip {
public var numberOfFrames:uint;
public function Chapter1()
{
numberOfFrames = 3;
//constructor
trace("Chapter 1 constructed");
Transition.moveFromTo();
}
public static function get getNumberOfFrames():uint
{
return numberOfFrames;
}
}
}
和一類稱爲過渡我喜歡作爲一個簡單的工具的使用方法:
package {
public class Transition {
public var gotNumber:uint;
public function Transition() {
trace(Chapter1.getNumberOfFrames);
}
static public function moveFromTo()
{
/* in the end id like to use this as a utility working with
NumberOfFrames from a parent Chapter instance.*/
}
}
}
我收到一條錯誤消息,告訴我:「1120:訪問未定義的屬性numberOfFrames。」所以getter函數本身似乎不被允許使用numberOfFrames。但是我不明白爲什麼,對於我發現的所有示例(儘管只使用兩個類並且沒有綁定)使getter返回一個var就像那樣。我想念那裏的東西嗎?
thanx。靜態關鍵字很容易刪除。但我想通過new關鍵字和addChild()方法在Main構造函數中創建一個名爲「chapter1」的Chapter1實例。我似乎也錯了。我想我真的不明白創建實例(darn)... – gauguerilla
@gauguerilla當你創建一個動畫片段時,你的確在創建一個實例。但是,該實例不能通過代碼直接訪問。您必須針對父級影片剪輯調用'getChildByName()'以獲取對該實例的引用。一旦你有了它,你就可以訪問它的公共屬性/方法。 – xxbbcc
@gauguerilla如果您使用'new'在代碼中創建影片剪輯,那麼您還可以將對該影片剪輯的引用存儲在其中一個類的成員變量中(其意義合理),然後再訪問它。在這種情況下,你可以避免使用'getChildByName()',它有點貴。 – xxbbcc