AS3如何重新加载游戏?

时间:2015-09-07 21:35:05

标签: actionscript-3

此代码尝试将舞台重置为原始设置并开始游戏,但是它只会删除舞台的所有内容并将其留空,它不会在舞台上加载项目。我在这里错过了什么?

playLvlAgn.addEventListener(MouseEvent.CLICK, doLevelAgain);

function doLevelAgain(event: MouseEvent): void {
  stage.removeChildren();
  gotoAndPlay(1);
}

2 个答案:

答案 0 :(得分:1)

只是因为视觉上的东西消失了,并不意味着记忆中的物体被神奇地清除。

您需要自己处理此重置。正如其他人所指出的,要做到这一点,它在很大程度上取决于您的游戏代码及其组织方式。我们根本无法提供任何有意义的帮助,因为游戏的可能性在写作方式上几乎是无限的。

作为一个有点相关的方面:

如果您要坚持使用框架(其他人可能会反对,但我个人认为它们在各种情况下都很有用),我建议您不要在框架1上启动所有内容。再次,我不知道你是如何编写游戏的,但在某些框架上分离出某些功能可能会有所帮助。

只是一个例子:

  • 也许资产加载可以在一帧(让我们说第1帧)

  • 然后在下一帧上创建全局持久性ui,例如帮助/设置菜单。 (第2帧)

  • 然后游戏级别本身,如地图和布局+复活后存活的东西可以构建在下一个(第3帧)

  • 然后游戏可能会播放特定数据+在重置后无法生存的内容,比如玩家得分和游戏时间(第4帧)

  • 然后游戏开始(第5帧)

然后对于重置,如果你想重置那个级别,你可以完成所有的重置/清理逻辑,然后跳转到第4帧,避免重新加载资源,重新创建持久的ui +物理游戏级别。

如果您没有为此做出规划,它可能会变得非常毛茸茸,在某些情况下,您可能需要重新考虑/重新组织/重写某些代码。这不是一件坏事。

答案 1 :(得分:0)

好的,我找到了解决方案。所有.box { border: 2px dashed #00f; height: 100px; width: 50px; } .dynamic-box { width:auto !important; } .dynamic-box-fixed-inner { display:block !important; overflow-x:scroll; } .inner-item { position:inline-block; padding:5px; } .table { display: table; width: 100%; table-layout:fixed; } .tr { display: table-row; } .tr div { display: table-cell; } <div class="table"> <div class="tr"> <div class="box">a</div> <div class="box">b</div> <!-- this element should fill the remaining width --> <div class="box dynamic-box"> <div class="dynamic-box-fixed-inner"> <div class="inner-item">item</div> <div class="inner-item">item</div> ... </div> </div> <div class="box">d</div> </div> </div> 都必须在按钮功能内。我还必须将它发送到第2帧并停止以防万一有人试图在游戏开始播放之前重新加载游戏。

removeChild