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

时间:2015-02-08 03:50:06

标签: actionscript-3

Maze Runner MovieClip有一个“AS Linkage”类MazeRunner

MazeRunner课程

public class MazeRunner extends MovieClip 
{

    public var _startCave       :String;

    public function MazeRunner():void
    {

    }
}

和movieclip(Maze Runner> mc_terrain)想要从“MazeRunner”类访问_startCave以在“mc_terrain”时间轴中使用。 可以吗?

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

1 个答案:

答案 0 :(得分:1)

如果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属性更改为static:

public static var _startCave       :String;

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

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

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