【问题标题】:Incompatible pointer types sending 'PTTouchScene *' to parameter of type 'UIView *'不兼容的指针类型将“PTTouchScene *”发送到“UIView *”类型的参数
【发布时间】:2014-03-01 04:53:25
【问题描述】:

当我使用 [touch previousLocationInView] 时,xcode 有警告“不兼容的指针类型发送...”

为什么?

这是我的代码:

- (void)touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{

[super touchMoved:touch withEvent:event];
CGPoint touchLocation = [touch locationInNode:self]; 
CGPoint preTouchLocation = [touch previousLocationInView:self];// --> Incompatible pointer types sending PTTouchScene * to parameter of type UIView *

}

【问题讨论】:

    标签: cocos2d-iphone uitouch


    【解决方案1】:

    PTTouchScene 实际上是SKScene 的子类吗? (我猜是根据它的名字和你对locationInNode:的使用)

    请注意SKScene 不是UIView 的子类。相反,SKViewUIView 的子类,具有 SKScene

    这意味着解决方法应该是使用-view 方法将视图从场景中拉出:

    [touch previousLocationInView:self.view];

    【讨论】:

    • 对不起,我不明白你的回答
    • 您将错误的对象传递给previousLocationInView:。尝试传递self.view,而不是self
    • 在这种情况下,您可能没有UIView,因此您不能使用-previousLocationInView:。您可以将 touchLocation 存储在 CCScene 上的属性中,并在下次调用 touchesMoved: 时使用它。
    • 我知道。这是一个简单的方法。但我想了解为什么我可以调用 [touch locationInView:self] 但不能调用 [touch previousLocationInView]
    • previousLocationInView: 需要 UIView 实例,而不是 CCScene 实例。看起来您可以从 CCDirector 对象访问 OpenGL 视图,所以试试 [touch previousLocationInView:[CCDirector sharedDirector].view];?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多