我试图从我的场景中删除表示路径的节点集.它们是SCNSphere几何节点和表示线的自定义几何的组合,使用SCNGeometrySource和SCNGeometryElement创建.
我没有在任何类型的数组中保留这些节点.相反,我按照名称搜索场景中rootNode的节点树的第一级,以及后续调用使它们淡出的动作序列,并且它们应该从根节点中删除它们自己.
代码如下:
func clearPath() {
//
let disappear = SCNAction.fadeOut(duration: 0.1)
let remove = SCNAction.removeFromParentNode()
let sequence = SCNAction.sequence([disappear, remove])
if let pathNodesToRemove = pathNodes() {
//
for node in pathNodesToRemove {
//
node.removeAllActions()
node.runAction(sequence)
}
}
if let lineNodesToRemove = lineNodes() {
for node in lineNodesToRemove {
//
node.removeAllActions()
node.runAction(sequence)
}
}
path.removeAll()
}
Run Code Online (Sandbox Code Playgroud)
哪里:
func pathNodes() -> [SCNNode]? {
//
...
let nodes = rootNode.childNodes.filter { (node) -> Bool in
//
guard let name = node.name else …Run Code Online (Sandbox Code Playgroud) 我编写了一个 node.js lambda 函数,当新记录插入特定表时,该函数基于 dynamodb 流触发。
该函数只接收新事件,过滤插入的记录,然后对于每条记录,使用几个字段从其他表中检索数据。使用此组合数据编写消息并通过 SNS 发送到特定目标 ARN。
该功能正确执行。检索所有相关数据,并发送推送通知。
但是,出于某种原因,该函数似乎为同一个流多次调用,并多次处理新插入的记录。结果是目标设备多次收到相同的推送通知。
我应该将回调放在不同的地方,还是我没有正确调用上下文?
这是函数:
'use strict';
var AWS = require("aws-sdk");
var dynamodb = new AWS.DynamoDB();
var sns = new AWS.SNS();
console.log('Loading function');
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2));
event.Records.forEach((record) => {
console.log(record.eventID);
console.log(record.eventName);
console.log('DynamoDB Record: %j', record.dynamodb);
if (record.eventName == 'INSERT') {
var matchId = record.dynamodb.NewImage.eventId.S;
var match_params = {
Key: {
"eventId": {
S: matchId
}
},
TableName: "xxxxxxxxxxx-mobilehub-xxxxxxx-Event"
};
//retrieve the match …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services node.js amazon-dynamodb aws-lambda