-1

我有一个附加了外部类的影片剪辑。这是 MC 代码(我只为相关部分缩短了它......)

package  {

    //all the imports here...


    public class mc_masterChapter extends MovieClip {

        public function mc_masterChapter() {
            trace (picFile,strChapTitle);
        }



        //Properties 
        public var picFile:String; 
        public var strChapTitle:String;

    }
}

在主类文件中,我使用 addChild 将此对象添加到舞台:

var masterChapter:mc_masterChapter = new mc_masterChapter;

masterChapter.picFile = "pic_Chap1.jpg";
masterChapter.strChapTitle = "ABCD:

addChildAt(masterChapter,1);

现在,MC 类代码中的跟踪为两个参数都提供了空值,但如果我在 MC 时间线内放置一个跟踪(而不是附加的类代码),它会给出正确的值!

如何在不获取 nuls 的情况下从 MC 类本身访问值?

谢谢你。

4

4 回答 4

1

有用!让我解释:

var masterChapter:mc_masterChapter = new mc_masterChapter; // Calls class constuctor
                                                           // so calls trace() too!
                                                           // You will get null null

masterChapter.picFile = "pic_Chap1.jpg"; // Assign the variables
masterChapter.strChapTitle = "ABCD";     // so they can be read

trace(masterChapter.picFile, masterChapter.strChapTitle); // Should trace pic_Chap1.jpg ABCD

如果您将以下方法添加到您的类中:

public function test():void {
    trace(picFile, strChapTitle);
}

然后调用masterChapter.test()它将成功跟踪这两个属性。所以是的,这个类可以读取它的属性。

于 2012-07-04T12:51:06.463 回答
0

制作您在主类中使用的 var public static var

于 2012-07-04T12:48:34.403 回答
0

可能更好的解决方案是使用 getter/setter 对,因此您可以在设置属性的确切时刻知道:

protected var _picFile:String:

public function get picFile():String {
   return _picFile;
}

public function set picFile(value:String):void {
   if (value != _picFile) {
     _picFile=value;
     trace('picFile set to', _picFile);
   }
}
于 2012-07-04T13:08:54.120 回答
0

好的!

我解开了这个谜。

我放了两条痕迹。主 MC 类中的一个说“嘿,我在 MC 里面 - picFile=” 和 put Function 中的一个说“我正在将此文件放入 picFile:”

好吧,这就是我所拥有的:

嘿,我在 MC 里面 - picFile=null

我将此文件放入 picFile:image.jpg

知道了!?!此刻我让他生出一个 MC 的实例(甚至在把它放到舞台上之前 - 只是定义对象(用这条线:)

var masterChapter:mc_masterChapter = new mc_masterChapter;

它已经运行了这个类,所以当然在这个阶段,参数还没有完全定义并且是null

定义代码就在该行之后(在 main.as 中)

masterChapter.pic="pic_Chap1.jpg";

所以我所做的就是将所有代码从 MC 对象的主类移动到同一个包内名为 init() 的公共函数中。然后我从父主类手动调用了这个函数。这样可以决定何时调用它(当然在我声明所有参数之后)。

而已。

上帝隐藏在小细节中:)所有助手的tnx。

于 2012-07-05T16:16:29.123 回答