我有一个附加了外部类的影片剪辑。 这是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类本身的值?
谢谢。
答案 0 :(得分: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()
它将成功跟踪这两个属性。所以,是的,该课程可以阅读其属性。
答案 1 :(得分:0)
制作您在主要课程public static var
中使用的变种。
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
OK!
我解开了这个谜。
我放了两条痕迹。主要MC课程中的一个说“嘿,我在MC里面 - picFile =” 函数中的一个函数说“我将这个文件放入picFile:”
这就是我所拥有的:
嘿,我在MC里面 - picFile = null得到了它!?!此刻我让他生了一个MC的实例(甚至在把它放到舞台上之前 - 只是定义了对象(用这一行:):我将此文件放入picFile:image.jpg
var masterChapter:mc_masterChapter = new mc_masterChapter;
它已经运行了这个类,所以当然在这个阶段,参数没有全部定义,并且 null 。
定义代码就在该行之后(在main.as中)
masterChapter.pic="pic_Chap1.jpg";
所以我做的是将所有代码从MC对象的主类移动到名为init()的同一个包中的公共函数。然后我从父主类手动调用此函数。 由此我可以决定何时调用它(在我声明所有参数之后)。
就是这样。
上帝躲在小细节中:) tnx为所有助手。