2
我有一個NSArray,其名稱爲SKSpriteNodes,添加到我的場景中。他們是NSString。在DoWhile條件下迭代一個NSArray
我每次觸發nstimer時都會生成一個隨機CGPoint,以便生成下一個精靈的位置。我使用下面的代碼:
-(CGPoint) newLocationForPurpose{
//
CGFloat randomX,randomY,xMax,xMin,yMax,yMin;
CGFloat halfSize;
halfSize= 20.f;
xMax = self.frame.size.width-halfSize;
xMin =halfSize;
yMax = self.frame.size.height-halfSize;
yMin = halfSize;
randomX = [[SharedInfo sharedManager] randomFloatBetween:xMin and:xMax];
randomY = [[SharedInfo sharedManager] randomFloatBetween:yMin and:yMax];
return CGPointMake(randomX, randomY);
}
但是,我想檢查點是否在先前繪製的精靈。
我想做的事是這樣的:
do {
randomX = [[SharedInfo sharedManager] randomFloatBetween:xMin and:xMax];
randomY = [[SharedInfo sharedManager] randomFloatBetween:yMin and:yMax];
} while (
! for (NSString *name in alreadyIngame) {
SKNode *node = [self childNodeWithName:name];
CGRectContainsPoint(node.frame, CGPointMake(randomX, randomY));
}
);
現在,我知道我的條件的一部分(而之後的括號內)不工作,但是這就是我想要做這樣的事情。它將遍歷alreadyInGame數組中的每個字符串(每次大約2-3個節點,不會有太多),並檢查新生成的點是否位於以前生成的精靈中。
我正在考慮先製作循環,但效率並不高。我可以有一個布爾值,並且如果循環的結果是假的(即,數組中存在點)來再次進行隨機化。
您認爲還有其他方法嗎?
非常感謝
完美,謝謝。一個普遍的問題,你認爲有更好的辦法...在一個單獨的方法,並從這個做的內部調用它? – Septronic
@Septronic我只會這樣做,如果我在其他地方使用代碼,否則它什麼都沒有實現。 – trojanfoe
是的,我同意。我正在考慮一些類或類似的東西來處理相關的方法,比如組合器類。 – Septronic