Actionscript 3 AS3类无法将MovieClip作为参数传递给其超类。。。?
有没有什么原因使它不能工作 下面是一个代码示例: 梅因Actionscript 3 AS3类无法将MovieClip作为参数传递给其超类。。。?,actionscript-3,parameters,constructor,parameter-passing,movieclip,Actionscript 3,Parameters,Constructor,Parameter Passing,Movieclip,有没有什么原因使它不能工作 下面是一个代码示例: 梅因 package{ import flash.display.MovieClip; public class main extends MovieClip{ public function main(){ addChild(new Square()); } } } Square.as是一个链接的MovieClip,在其时间轴上有一个名为submc的MovieCl
package{
import flash.display.MovieClip;
public class main extends MovieClip{
public function main(){
addChild(new Square());
}
}
}
Square.as是一个链接的MovieClip,在其时间轴上有一个名为submc的MovieClip
package{
import flash.display.MovieClip;
public class Square extends SuperSquare{
public var submc:MovieClip;
public function Square(){
super(submc, 1234);
trace("submc : " + submc);
}
}
}
超级正方形
package{
import flash.display.MovieClip;
public class SuperSquare extends MovieClip{
public function SuperSquare(_p:MovieClip, _value:Number){
trace("_p : " + _p + " _value : " + _value);
}
}
}
运行此代码时,它会跟踪:
_p : null _value : 1234
submc : [object MovieClip]
submc属性无法通过Square超级构造函数。我可能错过了什么?有什么建议吗
谢谢你以前的回答
您必须初始化submc。Square类的主体应如下所示:
public var submc:MovieClip;
public function Square()
{
submc = new MovieClip();
super(submc, 1234);
trace("submc : " + submc);
}
变量submc在初始化它或使它引用其他实例化对象之前是空的
新答案
如果要引用时间线上的元素,可能需要等到父元素添加到阶段后,才能引用嵌套元素。为此,您可以为ENTER\u FRAME添加一个事件侦听器,也可以将\u添加到\u STAGE
package{
import flash.display.MovieClip;
public class Square extends SuperSquare
{
public var submc:MovieClip;
public function Square()
{
// -- either one of these should work
addEventListener( Event.ADDED_TO_STAGE, onAdded );
addEventListener( Event.ENTER_FRAME, validateStage );
}
}
public function onAdded( event:Event ):void
{
// -- creates a problem because you can only call a super constructor in a constructor
// super(submc, 1234);
trace("submc : " + submc);
}
public function validateStage( event:Event ):void
{
if( !stage ) return;
if( stage.stageWidth == 0 ) return;
// -- ok to reference stage elements now
removeEventListener( Event.ENTER_FRAME, validateStage );
}
}
我不能完全肯定这是你的问题。然而,我也看到过过早引用阶段元素的类似问题 这也是我发布的内容,直到我意识到他在时间线上写道。这可能仍然是个问题。我做了一些其他的测试,但我最终使用了一个添加到舞台的活动。在这个例子中,sub_mc引用是空的,直到如您所说的将Square添加到stage。我必须使用此事件,以便movieclip引用与变量sub_mc链接。这证实了我的问题:不可能将moviclip引用传递给超类构造函数。。。谢谢你的回答!