的东西是错误与我的封装,但我不知道它是什么: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