我有兩個SKNodes,RMnode和RLnode,接收觸摸。不幸的是,在同一時間。Objective C - 如何在第一個SKnode被觸摸時禁用第二個Sknode的觸摸
我曾嘗試禁用觸摸第二個SKnode,當第一次被觸摸,反之亦然,但由於某種原因,它似乎並沒有工作。
有沒有另一種方法呢?
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint Rubyposition = [touch locationInNode:self];
[self selectNodeForTouch:Rubyposition]; //a helper method that asks the scene (self) for the node that is on the position touchLocation.
SKNode *RMnode = [self nodeAtPoint:Rubyposition];
SKNode *RLnode = [self nodeAtPoint:Rubyposition];
if ([RLnode.name isEqualToString:@"Ruby1"]) {
if(_TouchOnRubyRL == NO){
_TouchOnRubyRL = YES;
//RMnode.userInteractionEnabled = NO; //Not working
[self.level ActivatedBricks:_TouchOnRubyRL];
}
else if(_TouchOnRubyRL == YES){
_TouchOnRubyRL = NO;
//RMnode.userInteractionEnabled = YES; //not working
[self.level ActivatedBricks:_TouchOnRubyRL];
}
}
if ([RMnode.name isEqualToString:@"Ruby2"]) {
if(_TouchOnRubyRM == NO){
_TouchOnRubyRM = YES;
//RLnode.userInteractionEnabled = NO; //Not working
[self.level ActivatedBricks:_TouchOnRubyRM];
}
else if(_TouchOnRubyRM == YES){
_TouchOnRubyRM = NO;
//RLnode.userInteractionEnabled = YES; //Not working
[self.level ActivatedBricks:_TouchOnRubyRM];
}
}
}
}
selectNodeForTouch實際上做了什麼 - 這是不明確的。這個顯示方法在哪裏?在場景中還是在節點上?兩個節點是否都在觸摸位置?在處理程序中更改userInteractionEnabled不會改變對當前觸摸的反應 - 事件已經觸發,因此只能影響將來的事件。你能否更詳細地解釋你有什麼節點,以及當他們被觸摸時想要發生什麼。 –
@AliBeadle輔助方法在場景中。它是位於touchLocation位置的節點詢問場景(self)的幫助方法。然後if語句檢查所選節點是否是2個ruby節點之一,並「激活」或「停用」它。現在,我只想要禁用其中一個節點的觸摸,如果另一個先被觸摸,反之亦然。即觸摸第一個紅寶石 - >禁用第二個紅寶石節點的觸摸。第一個紅寶石第二次觸摸 - >啓用第二個紅寶石節點,反之亦然。 – Chriss1979