如何使用视图属性确定触摸的位置

时间:2011-08-17 20:29:09

标签: objective-c ios4 xcode4 interface-builder

我正在尝试开发一些简单的游戏应用。对于Pong风格的游戏,我有一个移动的球,保持在界限和两个桨。我实现了移动paddle 1的代码,以便它按预期反射球。

当我尝试将相同的行为添加到另一个paddle时,我尝试了这个:

UITouch *touch = [[event allTouches]anyObject]; // Picks up the touch

CGPoint location = [touch locationInView:self.view]; // Gets coordinates 
// to help move the paddle on the X axis; Y axis is determined by the paddle,
// so it only moves along one axis


if ([touch view] == paddle2) {
    // move the second paddle 
    ...    
}

else {
    // move the first paddle   
    ...
}

但是,任何触摸仅移动paddle1,表示从未激活条件。基于文档,我认为通过发送[touch view]消息,触摸的图像视图将返回其自己的名称。 我究竟做错了什么?这是一种更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

不要对拨片使用不同的视图,使用一个具有不同CALayers的主视图来绘制对象。
您可以通过为图层指定新原点来移动拨片。 该视图应该采用以下方法

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

找出你碰到它的地方。 假设你知道你的桨的框架,你可以决定是否用触摸击中它们。

我希望这会有所帮助。