我有一个由按钮触发的 else if buttonToggle_1 == true { buttonToggle_1 = false
let moveWaterBack = SCNAction.moveTo(homePosition_2, duration: 1)
let moveValineBack = SCNAction.moveTo(awayPosition_1, duration: 1)
atomsNode_3.hidden = false
bondsNode_3.hidden = false
hideTransients(true)
atomsNode_3.runAction(moveWaterBack)
bondsNode_3.runAction(moveWaterBack,
completionHandler: {
self.atomsNode_2.runAction(moveValineBack) ;
self.bondsNode_2.runAction(moveValineBack) ;
self.atomsNode_3.removeFromParentNode() ;
self.bondsNode_3.removeFromParentNode() ;
hideTransients(false)
})
}
动画。在随后按下按钮时,动画会反转。前进动画始终正常但反向动画有时会挂起。也就是说,它将在完成处理程序之前播放该部分然后冻结。但是当我应用我的三个手势中的任何一个(平移,平移,缩放)时,它会挂起并完成处理程序部分。相关代码:
hideTransients())
removeFromParentNode()
调用取消隐藏五个节点,按名称访问它们。有时完成会挂起,有时它不会。但是,如果它挂在同一页面上剩余的特定会话中,它将继续挂起后续按钮切换。我还没有想出任何因果关系。我已将hidden = true
来电更改为removeFromParentNode()
,目前这种情况正在发挥作用,但让我很紧张。
地球上到底发生了什么?
编辑1:虽然它的工作非常一致,但我已经使用后面提到的代码看了很多次(很多次),所以这并不是严格意义上的function makeDiv(callback){
var dfd = jQuery.Deferred();
$(function() {
$("#full_complete").append($(dose_credit).html()+ " " +$(storyboard).html() + " " +$(nar_name).html() + " " +$(nar_text).html());
full = $(this).closest('div').find("#full_complete");
dfd.resolve( "hurray" );
})
return dfd.promise();
}
function generateImg2(){
var doc = new jsPDF();
doc.fromHTML($(full).get(0), 15, 15, {
'width': 170,
});
doc.save('Test.pdf');
}
调用
答案 0 :(得分:1)
在一个动作中调用SCNNode.removeFromParentNode()
对我来说似乎很可疑。我已经看到另一个案例似乎导致了不稳定的行为,虽然没有文件说你不应该这样做。
我认为SCNAction.removeFromParentNode()
的存在是一个非常大的提示,并且调用该操作比直接操作节点树更可取。
使用SCNAction.group()
和SCNAction.sequence()
会使您的代码更简单。