使用SpriteKit场景编辑器时,我遇到了一些意想不到的行为,并想知道是否有其他人遇到同样的问题。
我在场景中创建了一个精灵,并添加了动作以使用场景编辑器移动它。单击编辑器上的动画按钮时,动作可以正常运行。我使用场景编辑器中的SKReferenceNode对象将此场景的引用添加到主场景,并且精灵在编辑器中按预期显示在主场景中。然而,当我构建并运行应用程序时,精灵会出现但没有动作运行。我在Xcode 9.2 beta上试过这个并得到了相同的结果。 如果我直接从主视图控制器加载精灵场景,所有的动作按预期执行,所以它似乎是引用节点的问题。 我还发现,如果我在主场景swift类中覆盖didMove(to :),并在其中放置一个断点,那么只要在它到达断点时点击继续,所有Actions按照预期在引用的精灵上播放。如果我禁用断点,则没有操作在引用的精灵上播放。 (所以我的解决方法是简单地使用断点,然后按下继续按钮)
另一个有趣的观察。我打开了一个使用旧版Xcode创建的示例项目,并且引用的sprite执行了他们的Action。我将这个旧的SKS文件复制到我的项目中并且Actions工作正常......直到我编辑了SKS文件(添加了另一个Action),然后它们再也没有工作过。
答案 0 :(得分:5)
我遇到了同样的问题,这让我发疯了。我尝试在场景和各个精灵上设置.isPaused。除了插入断点方法之外什么都没有用。这不是解决方案。
我发现如果我将暂停设置为true和false(这是我想要的值),那么它适用于所有精灵。
override func didMove(to view: SKView) {
self.isPaused = true
self.isPaused = false
}
这是场景编辑器中一个非常烦人的错误,应该修复。
答案 1 :(得分:1)
前几天我问了一个类似的问题: XCode 9: SKEditorReference doesn't allow animations?
我能够让这个工作的唯一方法是将isPaused放在我试图设置动画的精确精灵节点上(在一个ref节点内 - 我创建了一个完整的sks场景/文件并将其拖放到我的主要场景)。
我在顶级尝试了isPaused = false,主要场景无法查看到无效,然后将isPaused = false添加到主参考节点,无效。只有在我添加了isPaused = false时,我才会尝试设置动画的实际精灵。我从主&中删除了isPaused = false。 ref节点,只要它仍然在精灵节点上(在ref节点内)我试图动画:成功。
底线似乎是参考节点中任何精灵都需要isPaused = false。
答案 2 :(得分:0)
你好,我有同样的问题。以下是我的解决方案:
override func didMove(to view: SKView) {
sleep(1)
}
但是,这不是好方法。希望能为您提供暂时的帮助。 如果您解决此问题或找到更好的解决方案,请回复我,谢谢。
答案 3 :(得分:0)
遗憾的是,此问题在Xcode10中仍然存在。如果直接或作为父节点使用定制类,解决此问题的最简单方法是将const cheerio = require('cheerio');
var html = `
<div id="seriesDiv" style="margin-top: 0px;">
<table class="tableFile2" summary="Results">
<tbody><tr>
<th scope="col" width="7%">Filings</th>
<th scope="col" width="10%">Format</th>
<th scope="col">Description</th>
<th scope="col" width="10%">Filing Date</th>
<th scope="col" width="15%">File/Film Number</th>
</tr>
<tr>
<td nowrap="nowrap">4</td>
<td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119051031/0001209191-19-051031-index.htm" id="documentsbutton"> Documents</a></td>
<td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-051031 Size: 9 KB </td>
<td>2019-09-27</td>
<td></td>
</tr>
<tr class="blueRow">
<td nowrap="nowrap">4</td>
<td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119050363/0001209191-19-050363-index.htm" id="documentsbutton"> Documents</a></td>
<td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-050363 Size: 50 KB </td>
<td>2019-09-20</td>
<td></td>
</tr>
`;
const $ = cheerio.load(html);
var tables = $("#seriesDiv").find("table");
var trs = $(tables).find("tr");
for ( let i = 0; i < trs.length; i++ ){
let tds = $(trs[i]).find("td");
let ths = $(trs[i]).find("th");
for ( let j = 0; j < ths.length; j++ ){
console.log($(ths[j]).text());
}
for ( let j = 0; j < tds.length; j++ ){
console.log($(tds[j]).text());
}
}
添加到定制类的self.isPaused = false
方法中。