从 child/inside movieclip AS3 访问父 movieclip class 变量

access parent movieclip class variable from child/inside movieclip AS3

Maze Runner MovieClip 有一个 "AS Linkage" class MazeRunner

迷宫奔跑者class

public class MazeRunner extends MovieClip 
{

    public var _startCave       :String;

    public function MazeRunner():void
    {

    }
}

和 movieclip (Maze Runner>mc_terrain) 想要从 "MazeRunner" class 访问 _startCave 以便在 "mc_terrain" 时间线中使用。 可以吗?

我尝试使用 var mr:MazeRunner = new MazeRunner(); - 但这是一个错误,因为我认为您无法访问自己的 class/movieclip?

如果 Maze_Runner 是 DisplayObjectContainer 并且 mc_terrain 是通过 addChild 附加到 Mazerunner 的 DisplayObject:

var mr:MazeRunner = new MazeRunner(); // you have to have an instance of MazeRunner to run it, anyway
var mt:Terrain = new Terrain();
mr.addChilld(mt);

那么你可以使用

(mc_terrain.parent as MazeRunner)._startCave

访问它。

如果它们不是以这种方式连接的,那么您需要在 mc_terrain 中引用 MazeRunner(为此您需要一个新的 属性):

var mr:MazeRunner = newMazeRunner;
mr.mc_terrain.maze_runner = mr;
// ...access:
trace(mc_terrain.maze_runner._startCave);

最后,如果您始终只有一个 MazeRunner 活动实例,您可以将其 _startCave 属性 更改为静态:

public static var _startCave       :String;

这将允许您使用静态引用从任何地方修改和读取它:

MazeRunner._startCave = "1";
trace(MazeRunner._startCave);

但通常不推荐这样做,因为如果 MazeRunner 碰巧有几个需要不同 _startCave 的实例,它可能会导致问题。