Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3类无法将MovieClip作为参数传递给其超类。。。?_Actionscript 3_Parameters_Constructor_Parameter Passing_Movieclip - Fatal编程技术网

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引用传递给超类构造函数。。。谢谢你的回答!