Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在哪里测试这种情况?_Ios_Objective C_Sprite Kit - Fatal编程技术网

Ios 在哪里测试这种情况?

Ios 在哪里测试这种情况?,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我想测试玩家的身体何时移动过屏幕上的某个点,并在移动时调用gameOver节点 我试着把它放在触碰开始方法中,但每次用户触碰之后,它都会继续添加gameOver节点 我还尝试将其放入-(void)update:(CFTimeInterval)currentTime方法中,但它每帧都添加一个gameOver节点 这是一段代码,用于测试用户在屏幕上的某个点上是否移动/穿过: //Check to see if moves are at 0. if (movesRemaining < 0) {

我想测试玩家的身体何时移动过屏幕上的某个点,并在移动时调用gameOver节点

我试着把它放在触碰开始方法中,但每次用户触碰之后,它都会继续添加gameOver节点

我还尝试将其放入
-(void)update:(CFTimeInterval)currentTime
方法中,但它每帧都添加一个gameOver节点

这是一段代码,用于测试用户在屏幕上的某个点上是否移动/穿过:

//Check to see if moves are at 0.
if (movesRemaining < 0) {
    movesRemaining = 0;
}

if (_fish.position.y < CGRectGetMidY(self.frame)-160) {
    movesRemaining = 0;
}

if (movesRemaining == 0) {
    [self runAction:[SKAction sequence:@[
                                         [SKAction waitForDuration:0.5],
                                         [SKAction runBlock:^{
        [self outOfMoves];

    }],
                                         ]]];
}
检查用户在屏幕上的位置/他们在0时居住在精灵套件代码中的位置的最佳位置是哪里?

它在使用帧更新时进行了精确测试,但添加的帧太多

我还尝试在didMoveToView方法中使用“performSelector”调用,但也不起作用

(代码:

)

那我该怎么做呢

IMO,
-(void)update:(CFTimeInterval)currentTime
是进行检查的好地方。但是,由于在
outOfMoves
方法仍在运行时,检查会重复多次,因此会多次创建节点上的游戏

我建议您添加一个
BOOL
变量,该变量最初是
NO
,在调用
outOfMoves
方法时更改为
YES
。然后返回您的
更新:
,再次调用
outOfMoves
之前,检查此变量是否为
NO
。这样,您就不会在方法运行时一直调用它。此外,当您的方法完成并再次准备就绪时,您可以将此变量设置回
NO

-(void)outOfMoves {

    SKShapeNode *gameOverNode = [SKShapeNode node];
    [gameOverNode setPath:CGPathCreateWithRoundedRect(CGRectMake(-140, -125, 280, 250), 10, 10, nil)];
    gameOverNode.strokeColor = gameOverNode.fillColor = [UIColor colorWithRed:192/255. green:47/255. blue:47/255. alpha:1.0];
    gameOverNode.position = CGPointMake(CGRectGetMidX(self.frame), -150);

    SKLabelNode *outOfMoves = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
    outOfMoves.position = CGPointMake(0,80);
    outOfMoves.fontSize = 40;
    outOfMoves.text = @"OUT OF MOVES";

    SKLabelNode *reTry = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
    reTry.position = CGPointMake(0, 30);
    reTry.fontSize = 40;
    reTry.fontColor = [UIColor colorWithRed:255/255. green:156/255. blue:0/255. alpha:1.0];
    reTry.name = @"reTry";
    reTry.text = @"TRY AGAIN";

    [gameOverNode addChild:outOfMoves];
    [gameOverNode addChild:reTry];
    [self addChild:gameOverNode];

    [gameOverNode runAction:[SKAction moveToY:CGRectGetMidY(self.frame)+40 duration:0.5]];

}
-(void)didMoveToView:(SKView *)view {
    [self performSelector:@selector(checkNow) withObject:nil afterDelay:1.0];
}