【问题标题】:as3 Trying to access a main timeline variable from inside a movieclipas3 尝试从影片剪辑内部访问主时间轴变量
【发布时间】:2016-04-03 07:12:27
【问题描述】:

我刚刚找到了一种方法,但仍然出现错误。

在我的主要时间线上:

var onBeat:Boolean = new Boolean;

在一个movieclip中,我尝试通过以下方式访问它:

MovieClip(root).onBeat = true;

它在技术上有效,变量发生了变化。但它会抛出这个导致问题的错误:

错误 #1034:类型强制失败:无法将 flash.display::Stage@7fffaa2c0d1 转换为 flash.display.MovieClip。

这只是一项不可能完成的任务吗?

【问题讨论】:

  • 什么是root?你如何定义它?你在哪里定义它?
  • 我认为 root 只是指最高级别的父级。在这种情况下的主要阶段。我应该在某个地方定义它吗?
  • 如何添加您的“内部影片剪辑”? this.stage.addChild(insideMc);this.addChild(insideMc); ?
  • 问题在于 root 是舞台(舞台类),您尝试将其投射到 MovieClip。不应该只是 root.onBeat = true; ?

标签: actionscript-3 variables movieclip coercion


【解决方案1】:

您收到该错误是因为您已将 MovieClip 添加到舞台的显示列表中,而不是添加到主时间线列表中。

因此,在您的主时间线代码(或您的文档类)中,您可以使用 addChild(your_mc_instance)this.addChild(your_mc_instance) 添加您的 MovieClip。

但是,即使将 MovieClip 实例添加到舞台上,您也可以获得工作代码,例如:

var _root:DisplayObjectContainer = DisplayObjectContainer(root);
MovieClip(_root.getChildAt(0)).onBeat = true;

_root.getChildAt(0) 此处返回您的主时间线实例,因为它也已在任何其他对象之前添加到舞台的显示列表中。

希望能有所帮助。

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 2011-07-19
    • 2011-08-10
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多