我有一个包含场景的flash影片:scene1,scene2。 我选择了顺序,以便第一个启动scene1,我被要求添加一个允许flashvars传递的功能,如果fv_change等于1,那么当加载电影时,scene2应该是第一个出现的。
我在某个图层的第一帧中包含了以下代码:
this.onEnterFrame = function() {
delete this.onEnterFrame;
if (isset==undefined && _root.fv_change && _root.fv_change==1) {
isset = true;
gotoAndStop("scene2",1);
}
}
在我的Flash环境中进行测试时,一切正常,当我将其导出为HTML& SWF组合我获得了随机结果,我刷新了几次页面,有些时候出现了scene2,有些时候它仍然与scene1保持一致。
我做错了吗?使用AS2和外部数据(flashvars)更改场景顺序的正确方法是什么。
答案 0 :(得分:0)
猜测,如果该帧尚未加载,可能无法跳转到场景2 - 尝试使用模拟加载在IDE中进行测试(按ctrl + Enter两次)以确定。如果这是问题,请尝试添加预加载器,直到加载所需的帧(或整个电影)。 (参见示例代码here。)
答案 1 :(得分:0)
通过您的建议和一些googeling找到了解决方案。 看起来电影还没有完成加载所以我所做的就是创建一个名为preloader的场景,它作为第一个场景运行。在第2帧内部(我发现第1帧并不总是最好):
this.onEnterFrame = function(){
this.stop();
if(this.getBytesLoaded() >= this.getBytesTotal() && this.getBytesLoaded() > 0){
if (_root.fv_change && _root.fv_change ==1) {
_root.gotoAndPlay("frameLabelForScene2Frame1");
} else {
_root.gotoAndPlay("frameLabelForScene1Frame1");
}
delete this.onEnterFrame;
}
};
你还记得第一场比赛应该是第一场比赛。如果提供了参数,则应该首先运行scene2。 我认为应该强调的要点是:
希望这有助于任何人