通过as3类文件引用具有相同父对象的对象

时间:2013-12-27 15:41:57

标签: actionscript-3 flash

最近我在Flash中遇到了很多(大约70个)#1119和#1120错误。我在网上搜索过,但没有一个解决方案解决了我的问题。我自己尝试找出错误原因,制作了一个新的Flash动画。内容:

名为“nr1”的movieClip没有实例名称。 在nr1里面有两个movieClip,“nr2”,实例名称为“ob2”,“nr3”,实例名称为“ob3”。与nr2相关联的是as3类文件“nr2.as3”。这是nr2.as3里面的代码:

package  {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;


    public class nr2 extends MovieClip {


        public function nr2() {
            // constructor code
            this.addEventListener(MouseEvent.CLICK,func1);
        }
        function func1(e:MouseEvent){
            parent.ob3.x += 50;
        }
    }

}

这应该引用实例名称为“ob3”的对象,该对象具有与 this (nr2)相同的父对象。不过,我在第15行得到两个相同的#1119错误(parent.ob3.x + = 50;)。如何通过as3类文件引用具有相同父对象的对象?

2 个答案:

答案 0 :(得分:1)

在nr2中设置ob3的属性并不是一个好主意。您可以在nr2中调度一个事件,并在父项中添加eventListener,这样父项就可以捕获事件并使用bo3执行某些操作。

如果你真的想在nr2中设置ob3的属性,试试这个

function func1(e:MouseEvent) {

     var ob3:MovieClip = parent['ob3'] as MovieClip;

     if (ob3)
     {
         ob3.x += 50;
     }
}

答案 1 :(得分:0)

同意潘,控制另一个孩子的孩子并不是一个好主意。让引用两个孩子的父母(nr1)进行控制。所以你应该创建nr1类

package  {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;


    public class nr1 extends MovieClip {


        public function nr1() {

            // constructor code
            ob2.addEventListener(MouseEvent.CLICK,func1);
        }

        function func1(e:MouseEvent){
           ob3.x += 50;
        }
    }

}