此代码尝试将舞台重置为原始设置并开始游戏,但是它只会删除舞台的所有内容并将其留空,它不会在舞台上加载项目。我在这里错过了什么?
playLvlAgn.addEventListener(MouseEvent.CLICK, doLevelAgain);
function doLevelAgain(event: MouseEvent): void {
stage.removeChildren();
gotoAndPlay(1);
}
答案 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