ActionScript3 gotoAndPlay 未找到框架。
Posted
技术标签:
【中文标题】ActionScript3 gotoAndPlay 未找到框架。【英文标题】:ActionScript3 gotoAndPlay not finding frame. 【发布时间】:2018-08-05 10:43:14 【问题描述】:我是 ActionScript 3 的新手,但我非常了解如何跳帧。但是,我在影片剪辑符号中嵌套了帧,我的代码找不到它们。我正在制作一个简单的平台游戏。
ArgumentError: Error #2109: Frame label Stand Front Frame not found in
scene Stand Front Frame.
at flash.display::MovieClip/gotoAndStop()
at menutest_fla::MainTimeline/frame813()
at flash.display::MovieClip/gotoAndPlay()
at menutest_fla::MainTimeline/fl_ClickToGoToScene_3()
这是我的代码,非常简单。我没有注意到任何打字错误。我无法弄清楚为什么它不起作用。任何帮助将不胜感激,谢谢!
stop();
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
movieClip_5.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey_3);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed_3);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed_3);
movieClip_5.gotoAndStop("Stand Front Frame")
function fl_MoveInDirectionOfKey_3(event:Event)
if (upPressed)
movieClip_5.y -= 0;
if (downPressed)
movieClip_5.y += 0;
if (leftPressed)
movieClip_5.x -= 5;
if (rightPressed)
movieClip_5.x += 5;
function fl_SetKeyPressed_3(event:KeyboardEvent):void
switch (event.keyCode)
case Keyboard.UP:
upPressed = true;
break;
case Keyboard.DOWN:
downPressed = true;
break;
case Keyboard.LEFT:
leftPressed = true;
movieClip_5.gotoAndPlay("Walk Forward Frame");
break;
case Keyboard.RIGHT:
rightPressed = true;
movieClip_5.gotoAndPlay("Walk Backwards Frame");
break;
function fl_UnsetKeyPressed_3(event:KeyboardEvent):void
switch (event.keyCode)
case Keyboard.UP:
upPressed = false;
break;
case Keyboard.DOWN:
downPressed = false;
break;
case Keyboard.LEFT:
leftPressed = false;
movieClip_5.gotoAndPlay("Walk Backwards Frame");
break;
case Keyboard.RIGHT:
rightPressed = false;
movieClip_5.gotoAndPlay("Walk Forward Frame");
break;
import flash.events.Event;
import flash.geom.Rectangle;
stage.addEventListener(Event.ENTER_FRAME, cameraFollowCharacter);
function cameraFollowCharacter(evt:Event)
root.scrollRect = new Rectangle(movieClip_5.x - stage.stageWidth/3, movieClip_5.y - stage.stageHeight/1.5, stage.stageWidth, stage.stageHeight);
【问题讨论】:
把这段代码放在你的movieClip_5.gotoAndStop("Stand Front Frame");
代码行的右边上面:import flash.display.FrameLabel; var labels:Array = mc1.currentLabels; for (var i:uint = 0; i < labels.length; i++) var label:FrameLabel = labels[i]; trace("frame " + label.frame + ": " + label.name);
看看它的踪迹,如果其中一个是你所期望的标签跨度>
上面的代码追踪到了什么?您的问题很可能是范围之一,您要么处于错误的场景中,要么定位错误的时间线。
谢谢先生!使用它我能够找出范围是错误的。我很感激。
如果我的回答(关于范围以及如何找出问题所在)解决了您的问题,请将其标记为已接受。
【参考方案1】:
从您的帧标签中删除您的空格(在您的代码和影片剪辑的帧标签中)。
如果没有解决,请使用您的帧号而不是标签再次尝试。
leftPressed = true;
movieClip_5.gotoAndPlay(23);
break;
【讨论】:
您对 menutest_fla 帧 813 有什么操作?它导致了错误!【参考方案2】:大多数时候出现此错误,如果您确定框架标签中没有错字,则问题是范围之一。
分配给变量/实例名称movieClip_5
的时间轴不是您认为的那个,或者您在错误的场景中。
要仔细检查这不是错字,并查看movieClip_5
的所有框架标签,请执行以下操作(来自documentation 的示例代码):
import flash.display.FrameLabel;
var labels:Array = movieClip_5.currentLabels;
for (var i:uint = 0; i < labels.length; i++)
var label:FrameLabel = labels[i];
trace("frame " + label.frame + ": " + label.name);
这会将movieClip_5
当前场景的每一帧标签写入输出窗口。如果你没有看到你所期望的,这意味着 当这段代码运行时,你不在你所期望的场景中,或者movieClip_5
不是你认为的时间线(也许你想要一个movieClip_5
的孩子,例如 movieClip_5.someChildsInstanceName.gotoAndPlay("Walk Forward Frame")
)。
【讨论】:
【参考方案3】:感谢您的反馈!
它最终成为一个符号问题,我没有将框架正确嵌套在我调用的符号中。它最终不是代码。感谢您的帮助!
【讨论】:
以上是关于ActionScript3 gotoAndPlay 未找到框架。的主要内容,如果未能解决你的问题,请参考以下文章
Flash AS3.0 - 错误 1180 调用可能未定义的方法 gotoAndPlay?
EaselJS SpriteSheet 没有响应 gotoAndPlay
as3 以普通影片剪辑的形式访问子项(gotoAndPlay 等)