我从我的图书馆里有一个电影剪辑"achtergrond",我把它放在舞台上,函数如下:
function set_game ()
{
oefNr = 4;
var bg:achtergrond = new achtergrond();
bg.x = 0;
bg.y = 0;
bg.name = "bg";
bg.gotoAndStop ("uit");
addChild (bg);
set_next ();
}
影片剪辑包含 2 个帧"aan"和"uit",它从帧"uit"开始。此外,在我的游戏中,我想在播放声音时将帧设置为"aan",如下所示:
function playSnd ():void
{
getChildByName("bg").gotoAndStop("aan");
snd = new Sound(new URLRequest("phonetic_" + curArr[curSnd] + ".mp3"));
cnl = snd.play();
cnl.addEventListener (Event.SOUND_COMPLETE, completeSnd);
}
但是对于我的生活,我找不到正确的方法来做到这一点。Flash一直在讨论displayObjects和其他东西,我不知道为什么我不能处理我的电影剪辑。实际上,我有一个线索,但仅此而已。我还不太了解Flash的这一部分。
答案是,如果我尝试像这样访问我的剪辑:this["bg"] 或 getChildByName("bg"),我指的是 DisplayObject。这没有MovieClip的所有方法,就像我在这种情况下需要的gotoAndStop一样。
我声明了一个新变量:
var movie:MovieClip;
然后,我将 DisplayObject 转换为 MovieClip 并将其放入 var 影片中:
function set_game ()
{
oefNr = 4;
var bg:achtergrond = new achtergrond();
bg.x = 0;
bg.y = 0;
bg.name = "bg";
bg.gotoAndStop ("uit");
addChild (bg);
movie = this.getChildByName("bg") as MovieClip;
set_next ();
}
现在我可以使用特定于 MovieClip 的方法,例如 gotoAndStop:
function playSnd ():void
{
movie.gotoAndStop("aan");
snd = new Sound(new URLRequest("phonetic_" + curArr[curSnd] + ".mp3"));
cnl = snd.play();
cnl.addEventListener (Event.SOUND_COMPLETE, completeSnd);
}
受此答案启发的答案
bg.name = "bg";
实际上很多时候此代码无法正常工作。因此,您应该获取"achtergrond"对象的真实实例名称,而不是设置名称,而不是必须使用此实例名称。
另一种解决方案:
我认为achtergrond是单个对象,那么为什么你把它与"getChildByName"一起使用?像bg.gotoAndStop();
一样使用它.