在询问之前,我已经阅读过其他文章以解决类似问题,但无法使其正常运行。我在舞台上有一个动态文本,实例名称为txtX。然后在主时间轴第1帧的动作脚本中,使用以下代码添加现有的影片剪辑mc1:
var mc = new MC();
addChild(mc);
然后我在主时间轴的第1帧上添加带有动作脚本的另一个动画片段mc2,并将其作为子元素添加到mc1。
var mc2 = new MC2();
mc.addChild(mc2);
现在,在mc2的类(为export AS创建的类)中,我试图修改动态文本的文本,但是我一生都无法弄清楚如何引用它。我想说:
stage.txtX.text = "blah blah";
甚至
parent.parent.txtX.text = "blah blah";
但是我通常会收到类似以下的错误:
Access of possibly undefined property txtX through a reference with static type flash.display:DisplayObjectContainer.
上面的错误是针对parent.parent.txtX.text行的。请告诉我我在做什么错。谢谢。我也知道变量名是荒谬的,但这仅是我的示例。在我的代码中,名称更有意义。
答案 0 :(得分:0)
当您在主时间轴上放置一个文本字段并为其指定实例名称txtX
时,它实际上不是stage的直接子代。阶段将是其祖父母(主/根时间轴将是其父级)。
这样,如果mc1
和mc2
是兄弟姐妹(也在主时间轴上),则可以这样访问文本字段:
MovieClip(parent).txtX.text = "Hello";
或者,您可以使用root
关键字访问根(主)时间轴:
MovieClip(root).txtX.text = "Hello";
无论深度或嵌套如何,该方法都可以在任何时间轴上工作。
答案 1 :(得分:-1)
我终于明白了。不确定这样做是否正确,但是在父级MoveieClip中,我在代码中创建了一个TextField:
import flash.text.TextField;
import flash.text.TextFormat;
public var txtX:TextField;
txtX = new TextField(); txtX.x=0; txtX.y=0; addChild(txtX);
public function changeTxt( t )
{
tf = new TextFormat();
tf.size=4;
tf.color = 0xFFFF00;
txtX.text = t;
txtX.setTextFormat(tf);
}
然后在我的MovieClip子类中,我这样调用父级的方法:
MovieClip(parent).changeTxt( "Hello" );
比我期望的要多得多的工作,但这似乎行得通。