当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip

Posted

技术标签:

【中文标题】当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip【英文标题】:AS3 Accessing MovieClip when added to stage on another AS class file 【发布时间】:2015-07-11 02:42:53 【问题描述】:

我已经尝试在这里搜索文章,遗憾的是,没有找到任何有助于解决我的问题的内容。抱歉,如果有文章包含我正在寻找的答案,并且我确信这是一个简单的答案,我就是无法完全理解它。

我有我的 AS 阶段文档和两个 AS 类文件(MAIN 和 gameScreen),我正在尝试从 gameScreen.as 文件中的 MAIN 访问“currentLocation”变量。

我尝试的一切似乎都失败并出现错误。

          import Main;
          trace(Main.currentLocation);

          trace(MovieClip(parent).currentLocation);

我得到的错误:

        TypeError: Error #1034: Type Coercion failed: cannot convert Main$ to flash.display.MovieClip.

请让我知道我哪里出错了,在此先感谢各位。

【问题讨论】:

【参考方案1】:

只需将其传递给构造函数(类名应以大写字母开头):

public function GameScreen (currentLocation:Point)

    //...

这不依赖于可能发生变化的显示层次结构(如.parent 所做的那样)。 它也不关心该变量的定义位置(如root.currentLocationstatic var.parent 做)。

它只是说“你好,我是 GameScreen,我需要当前位置。请给我。”

【讨论】:

【参考方案2】:

我使用这段代码从主 swf 中获取变量

var p:MovieClip = this.parent.parent as MovieClip;
trace(p.variableName);

【讨论】:

【参考方案3】:

将 Main 类中的 currentLocation 变量设为静态。

public static var currentLocation:int;

这样您就可以在 gameScreen 类中访问Main.currentLocation

【讨论】:

以上是关于当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip的主要内容,如果未能解决你的问题,请参考以下文章

从 AS3 文件动态添加 Flash 组件到舞台

我无法从 AS3 类文件控制舞台中的 MovieClip

如何从 doc 类 AS3 定位舞台上的影片剪辑?

AS3:从另一个动态添加的孩子访问一个动态添加的孩子

AS3 Flash 顽固的简单按钮没有出现在舞台上

Flash AS3 动态添加子项。命名它们并调用每个分开的问题