【问题标题】:How to move 2 objects add the same time in Xcode 4.6.3?如何在 Xcode 4.6.3 中同时移动 2 个对象?
【发布时间】:2013-09-27 02:48:10
【问题描述】:

我在 Xcode 4.6.3 的 Interface Builder 中有一个视图。在这个视图中,我有 2 个小的 UIImageViews。第一个 UIImageView 在视图的上半部分,第二个在视图的下半部分。我想同时移动这两个视图(这是两个玩家的多人游戏,当这两个玩家同时移动这个 UIImageViews ,但每个人都在它自己的方向)。视图上半部分的顶部 UIImageView 和视图下半部分的底部 UIImageView 对应。目前我的代码只允许我移动一个对象(对象是“播放器”,它是一个底部 UIImageView):

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

       UITouch *drag = [[event allTouches] anyObject];
       player.center = CGPointMake(drag locationInView:self.view);

}

谢谢!

【问题讨论】:

  • 你有一个对象的点数偏差。为什么不在相同的拖动方法中对第二个对象使用相同的偏差?
  • 哦,对不起,我听不懂你的意思:(你能详细解释一下吗?
  • 从我阅读的内容来看,这似乎不是一个多人游戏的问题。您希望能够捕捉到两个物体的触感并让它们做出自己的动作吗?您是否考虑过为放置在屏幕上的每个单独对象使用 UIGestureRecognizers?如果是这种情况,请查看:stackoverflow.com/questions/13879666/…。这个问答非常清楚如何实现这一目标。更重要的是,这可能会让你有超过 2 个物体同时移动,就像我怀疑你想要的那样。

标签: iphone ios objective-c xcode uiimageview


【解决方案1】:

(NSSet *)touches 有点像触摸数组。如果在屏幕上检测到 2 次触摸,则触摸将有 2 个对象。像这样枚举它们:

NSSet *allTouches = [event allTouches]; 
for (UITouch *touch in allTouches) {}

会给你一个 UITouch 对象,这样你就可以检查它在屏幕的哪个部分,看看它是哪个播放器。

顺便说一句,CGPointMake(drag locationInView:self.view) 应该是 CGPointMake([drag locationInView:self.view])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多