actionscript-3 - Flash 播放头转到错误的场景,没有可解释的原因

标签 actionscript-3 flash scene

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");
}

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html#scenes


您创建字符串的方式似乎无效:

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/

相关文章:

flash - 在 Flash CS5 中拖动对象时鼠标悬停

flash - 访问 Flash CS3 AS3 项目中的 Web 服务

apache-flex - 从flex连接到Socket时违反安全沙箱

java - Flash SWF 能否以任何方式与 Java applet 通信,反之亦然?

java - 如何在 javafx 中快照整个场景?

java - ActionScript 到 java (red5)

css - Div 没有出现在嵌入式 Flash 播放器的顶部

actionscript-3 - Flash 中的编译时共享库符号

VLC 中的时间码和文件名前缀

ios - 在 iOS 中点击标签后是否可以更改场景?