我正在创建一个Adobe Air Desktop项目,该项目在MainTimeline中有许多MovieClip(RadioSel,CarMC1,CarMC2,CarMC3等)。
当您点击CarMC
中的任何一个时,它会显示RadioSel
(另一个动画片段)
function showRadio(event: MouseEvent) {
RadioSel.visible = true;
RadioSel.instance = event.currentTarget.name;
trace (RadioSel.instance);
}
CarMC
是具有许多帧的MovieClip。每个都显示不同的形状,取决于RadioSel
选择。 RadioSel
是一个MovieClip,它有多个单选按钮,每个按钮都将CarMC
更改为不同的形状,而一个名为instance
的var将点击的CarMC
实例作为字符串
我在RadioSel
内创建了一个函数(在radiobuttongroup更改时调用),它将点击的CarMC
更改为指定的框架并隐藏RadioSel
。
function chooseCar(CarInstance: String, frame: Number) {
this["Object(root)."+CarInstance].gotoAndStop(frame);
this.visible = false;
//trace(event.target)
}
当我更改RadioSel
选项时,我称之为......
chooseCar(instance, frameNo)
...其中instance
是CarMC
的名称,而frameNo
是由单击的单选按钮定义的数字,但每次调用时都会出错功能。我相信错误就在这一部分:
this["Object(root)."+CarInstance].gotoAndStop(frame);
我该如何解决?
答案 0 :(得分:0)
您没有传递实例(movieclip),而是传递实例名称(字符串)。您应该通过汽车实例(movieClip)来简化操作 - 然后您不关心您的汽车在哪里以及如何访问它们:
function showRadio(event: MouseEvent)
{
RadioSel.visible = true;
// I assume the currentTarget is your car you've clicked on
// pass the movieclip instance to the radiosel and not just the name
RadioSel.instance = event.currentTarget as MovieClip;
trace (RadioSel.instance.name);
}
在你的RadioSel中:
public var instance:MovieClip;
// no need to pass the instance here as it is saved in the instance property anyway
function chooseCar(frame: Number)
{
instance.gotoAndStop(frame);
this.visible = false;
}