【问题标题】:How can i get the two different image objects intersection point while they are animating in iOS?在 iOS 中制作动画时如何获取两个不同的图像对象的交点?
【发布时间】:2013-01-11 04:26:58
【问题描述】:

我需要这个问题的解决方案。 Image 对象(水果图像)从上到下动画,就像下雪一样。我需要使用另一个image object(篮子图像)来捕捉image 对象。所以,我想找出篮子图像和水果图像的交点。但我没有得到交点。我用了

CGRectIntersectsRect(fruitObjPresentationLayer.frame, basketObjPresentationLayer.frame);

找出交点..

【问题讨论】:

  • 你有没有将更新的帧传递给这个函数。
  • 我得到(fruitObjPresentationLayer.frame.x 和 .y 值为 null..

标签: iphone ios objective-c animation frame


【解决方案1】:

CGRectIntersectsRect() 返回一个布尔值而不是相交点。因此,当它们相交时,将帧位置相互比较,然后进行数学运算以找出相交的位置。

此外,框架是矩形,因此它们的交点实际上是一条线,而不是一个点。

你可以设置一个 NSTimer 来触发,比如说,每秒 60 次调用

if ([CGRectIntersectsRect(fruitObjPresentationLayer.frame,    basketObjPresentationLayer.frame)] {
//when this is called do whatever you want with the objects current frame.origin
}

【讨论】:

    【解决方案2】:

    CGRectIntersectRect 是一个返回boolean 值的函数,如果两个对象之间发生冲突,您的帧被传递给此函数。 在您的情况下,您需要传递两个对象的更新框架。根据您的问题,对象是从上到下的动画,这意味着两个对象的帧在运行时都会更改。因此,您需要计算两个对象当前位置的frame,然后将更新后的frame 传递给CGRectIntersectRect 函数。尝试将更新后的帧传递给CGRectIntersectRect,这可以解决您的问题。

    为了计算更新的值,您还必须找出增量值,例如

    deltax = currentposition.x-previousposition.x;
    deltay = currentposition.y-previousposition.y;
    

    然后将两个对象的frame 更新为

    CGRect Frame = obj1.frame;
    
        Frame.origin.x+=delta_x;
        Frame.origin.y+=delta_y; 
    

    第二个object也是如此。

    【讨论】:

    • 请建议我,如何在制作动画时找出图像对象的更新帧..
    • @user1882447 请找到我的更新答案 我已经编辑了我的答案。
    • 感谢您的即时响应..但是使用此代码我还需要计算更新的帧值。仅使用更新的帧值我得到图像的当前位置和以前的位置..我该如何计算上一个位置和当前位置
    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多