我正在为iPad和iOS 10编写应用程序。 我的应用程序只使用一个SKScene(大小为1300 x 1000)。 我还使用一个这样定义的相机:
myCamera=[[SKCameraNode alloc] init];
myCamera.position=CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
self.camera=myCamera;
[self addChild:myCamera];
我使用了许多用户可以拖动的SKSpriteNodes(甚至超出了SKScene的大小)。
我也用:
[myCamera setScale:newScale];
处理捏缩放。
我需要知道是否有办法获得距离右侧SKScene中距离位置0,0最远的节点的最大X位置,而不必逐个读取所有节点位置。 然后对其他三个方面(向上,向左,向下)做同样的事情。
答案 0 :(得分:1)
保持四个浮点数minX,minY,maxX,maxY。当用户拖动节点时,检查其位置是否超过max或小于min。如果是,请更新相应的值,例如
编辑使用ZNODE* head = new ZNODE(0);
ZNODE* current = head;
ZNODE* cycle = 0;
for (int i = 1; i < 8; i++)
{
current->_next = new ZNODE(i);
current = current->_next;
if (i == 6)
cycle = current;
if (i == 7)
current->_next = cycle;
}
// verify that there is a cycle
ZNODE* slow = head;
ZNODE* fast = head;
ZNODE* cycleNode = 0;
while (slow && fast && fast->_next)
{
slow = slow->_next;
fast = fast->_next->_next;
if (slow == fast)
{
cycleNode = slow;
break;
}
}
if (cycleNode == 0)
{
printf("No cycle\n");
return;
}
// finally find a cycle node which will be p2
ZNODE* p1 = head;
ZNODE* p2 = cycleNode;
while (1)
{
for (p2 = cycleNode; p2->_next != cycleNode; p2 = p2->_next)
{
if (p2 == p1)
break;
}
if (p2 == p1)
break;
p1 = p1->_next;
}
printf("%d\n", p2->_i);
获取节点后代的完整范围。
calculateAccumulatedFrame