所以,我是AS3的初学者。我一直在阅读和弄清楚事情,虽然我无法绕过这个。
所以,我有4帧。每个帧都有一个不同的影片剪辑,MC1,MC2,MC3,MC4 在这四个影片剪辑中,有另一个影片剪辑,每个影片剪辑具有相同的实例名称:BC,并且在该影片剪辑中有两个帧。第1帧有一个点,而第2帧没有。 MC1> BC>(2帧) MC2> BC>(2帧) 等等....
我正在尝试做什么:我想看看是否有任何方法可以通过一个按钮同时控制所有四个MC剪辑中BC的帧导航。 我想在BC影片剪辑中的两个帧之间切换回第四个。 我很茫然,我尝试过很多东西。
答案 0 :(得分:0)
你应该可以通过给他们所有相同的实例名称(只要一次只有一个在屏幕上)来实现这一目的。
因此,假设您有一个跨越所有4个帧且实例名称为navBtn
的按钮,并且您为每个MC1-4剪辑指定了相同的实例名称MC
。您可以在第1帧执行以下操作:
navBtn.addEventListener(MouseEvent.CLICK, navBtnClick);
function navBtnClick(e:Event):void {
if(MC.BC.currentFrame == 2){
MC.BC.gotoAndStop(1);
}else{
MC.BC.gotoAndStop(2);
}
}
再次阅读你的问题,也许正在寻找的是让每个片段在加载时自动转到BC
孩子的同一帧?如果是这种情况,请按照@Organis对您的问题的评论中的示例进行操作。以下是一种可以实现此目的的方法:
在主时间轴的第一帧上创建两个变量:
var BC_NAV_CHANGE:String = "BC_NAV_CHANGE";
var BC_CurFrame:int = 1;
然后,当您需要更改BC对象的框架时,请执行以下操作:
//create a function that you call when you want to change the BC frame
function toggleBCFrame(e:Event = null){
MovieClip(root).BC_CurFrame = MovieClip(root).BC_CurFrame == 1 ? 2 : 1;
//the line above is a if/else shorthand, that is setting a new value to the `BC_CurFrame` var,
//if the current value is `1`, it will set it to `2`, otherwise it will set it to `1`
MovieClip(root).dispatchEvent(new Event(MovieClip(root).BC_NAV_CHANGE));
//this line (above) dispatches a event telling anything that's listening that the variable has changed
}
如果上面的代码位于主时间轴上,您可以放弃代码的所有MovieClip(root).
部分。
现在,在BC
MovieClip的时间轴上,输入以下代码:
//create a function that goes to and stops at the frame stored in the global variable
function updateFrame(e:Event = null){
gotoAndStop(MovieClip(root).BC_CurFrame);
}
//next listen for the BC_NAV_CHANGE event, and call the above update function above any time that event happens
MovieClip(root).addEventListener(MovieClip(root).BC_NAV_CHANGE, updateFrame);
//lastly, call the update function right away so when the BC clips loads it immediately goes to the correct frame
updateFrame();