Flash 时不时地会做一些不寻常的事情,即使是像场景导航这样简单的事情。问题在于,Flash 播放头并没有按照第一个场景的指示转到“PitOne”场景,而是奇怪地到达了我们的“LevelOne”场景。这让我感到困惑,因为我无法弄清楚什么可能会改变 Flash 播放头的路径。
在第一个场景的最后一行我直接告诉Flash去我们的“PitOne”场景,这意味着即使之前调用了任何其他导航方法,也只有最后一个应该被执行。
除此之外,第一个场景没有添加任何事件监听器,除了一些鼠标点击事件。然而,由于在导出 Flash 影片后我们立即被带到可怕的“LevelOne”场景,我们可以假设这些 eventListeners 与我们的问题无关。
我在每个场景上设置了一个跟踪方法来跟踪我们的 Flash 播放头的遭遇。根据跟踪输出,Flash只进入了第一个场景和“LevelOne”场景,所以我们直接从第一个场景进入“LevelOne”场景。这意味着如果我有问题,它会出现在第一个场景中。 但是,在我刚刚向您描述的场景中,有什么可能会改变我们的场景导航路径?如果您对此有任何想法,请告诉我!感谢您的宝贵时间。
附加信息: 如果我告诉您,每当我返回第一个场景时,场景导航代码似乎就会启动并开始工作,这可能会有所帮助,因为我们会被发送到“PitOne”场景。
我还意识到,如果您像我一样,就会希望看到手头的真实代码。这是第一个场景的重要代码(我们知道问题出在第一个场景,因为正是这个场景将我们直接启动到“LevelOne”场景):
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Scene;
import flash.text.TextFormat;
stop();
playNewBtn.addEventListener(MouseEvent.CLICK,playNew);
function playNew(e:MouseEvent){
playNewBtn.removeEventListener(MouseEvent.CLICK,playNew);
settingsBtn.removeEventListener(MouseEvent.CLICK,gotoSettings);
creditsBtn.removeEventListener(MouseEvent.CLICK,gotoCredits);
gotoAndPlay(1,"LevelOne");
}
settingsBtn.addEventListener(MouseEvent.CLICK,gotoSettings);
function gotoSettings(e:MouseEvent){
playNewBtn.removeEventListener(MouseEvent.CLICK,playNew);
settingsBtn.removeEventListener(MouseEvent.CLICK,gotoSettings);
creditsBtn.removeEventListener(MouseEvent.CLICK,gotoCredits);
gotoAndPlay(1,"Settings");
}
creditsBtn.addEventListener(MouseEvent.CLICK,gotoCredits);
function gotoCredits(e:MouseEvent){
playNewBtn.removeEventListener(MouseEvent.CLICK,playNew);
settingsBtn.removeEventListener(MouseEvent.CLICK,gotoSettings);
creditsBtn.removeEventListener(MouseEvent.CLICK,gotoCredits);
gotoAndPlay(1,"Credits");
}
gotoAndPlay(1,"PitOne");
最佳答案
这不是答案,但将所有这些都塞进评论中很乏味且可读性差。
也许您在其中一个场景名称中打错了字?
尝试运行此代码以获取所有场景的列表:
import flash.display.Scene;
for (var i:uint = 0; i < scenes.length; i++) {
var scene:Scene = scenes[i];
trace("scene " + scene.name + ": " + scene.numFrames + " frames");
}
您创建字符串的方式似乎无效:
trace("entered "settings"");
应该是
trace("entered settings");
如果你想在输出中包含 ",你必须通过\"或简单地使用 ' 来转义它们。
在您的代码中,settings
之前的 "标记字符串的结尾,而不是字符串的字符。
如果您有“数千行”,那可能是因为重复代码的数量。
function disableButtons():void
{
playNewBtn.removeEventListener(MouseEvent.CLICK,playNew);
settingsBtn.removeEventListener(MouseEvent.CLICK,gotoSettings);
creditsBtn.removeEventListener(MouseEvent.CLICK,gotoCredits);
}
关于actionscript-3 - Flash 播放头转到错误的场景,没有可解释的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540005/