如何从子 Slider 影片剪辑访问父项中定义的对象
Posted
技术标签:
【中文标题】如何从子 Slider 影片剪辑访问父项中定义的对象【英文标题】:How to access object defined in parent, from child Slider movieclip 【发布时间】:2012-09-30 13:49:32 【问题描述】:这是我的应用结构:
parent->[slider->[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: 通过引用访问可能未定义的属性 myObj 具有静态类型 flash.display:DisplayObjectContainer。
如何从子影片剪辑访问在父时间轴中定义的对象?
【问题讨论】:
【参考方案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;
【讨论】:
【参考方案2】:MovieClip(this.parent)
是 slider
而不是 parent
。您可以通过MovieClip(this.parent.parent)
访问父时间线。如果您想访问myObj
然后MovieClip(this.parent.parent).myObj
也可以通过MovieClip(this.parent.parent).myObj.propertyA
访问myObj
中的任何属性。在这种情况下,A_function_in_the_object
是 myObj
的属性。
【讨论】:
请问myObj
和movieClip1
的框架已经定义了吗?以上是关于如何从子 Slider 影片剪辑访问父项中定义的对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 as3 同时访问所有影片剪辑(以及影片剪辑中的影片剪辑......)?