3

这是我的应用程序结构:

父级->[滑块->[movieClip1,movieClip2,movieClip3]]

所以我基本上在 Slider 组件中有一些影片剪辑。
现在我在父时间线中定义了一个对象

var myObj:Object = new Object();... 

我想从 Slider 组件中的movieClip1 访问这个对象。
我试过了:

trace(MovieClip(this.parent).myObj.A_function_in_the_object());

哪个输出:

TypeError:错误 #1034:类型强制失败:无法将 fl.controls::BaseButton@222082e1 转换为 flash.display.MovieClip。在 SliderTrack_skin/frame1()

trace(parent.myObj.A_function_in_the_object());

哪个输出:

1119:通过静态类型 flash.display:DisplayObjectContainer 的引用访问可能未定义的属性 myObj。

如何从子影片剪辑访问在父时间轴中定义的对象?

4

2 回答 2

1

因为 Flash 组件的结构很复杂,所以 this.parent 并不总是返回您期望的类。所以,如果你想访问父对象,你应该使用while循环而不是“this.parent.parent.parent ...”。

像这样。

var obj: Object = this;
while (obj.parent != null) {

    obj = obj.parent;

    // If "obj" is the class you expected, stop loop.
    if (obj is MovieClip) {

        // Do something like below.
        MovieClip(obj).myObj.A_function_in_the_object();
        break;
    }
}
于 2015-08-25T05:46:34.763 回答
0

MovieClip(this.parent)不是。slider_ parent您可以通过 访问父时间线MovieClip(this.parent.parent)。如果您想访问,myObj那么MovieClip(this.parent.parent).myObj您也可以访问myObjby中的任何属性MovieClip(this.parent.parent).myObj.propertyA。在这种情况下A_function_in_the_object是 的属性myObj

于 2012-10-10T08:03:55.070 回答