访问动画的presentationLayer以检测碰撞

2023-12-02

我有两个对象:一个通过动画移动,另一个在我用手指拖动时移动。我希望能够使用 CGIntersectsRect 检测两者何时“碰撞”。然而,我听说为了用动画来做到这一点,我需要访问表示层以从那里获取值。然而,我不知道该怎么做。这是我的动画代码:

UIImage *flakeImage = [UIImage imageNamed:@"apple.png"];
UIImageView *flakeView = [[UIImageView alloc] initWithImage:flakeImage];
flakeView.frame = CGRectMake(200, -25.0, 25.0, 25.0);
[self.view addSubview:flakeView];

[UIView beginAnimations:nil context:(flakeView)];
[UIView setAnimationDuration:2];

flakeView.frame = CGRectMake(200, 800.0, 25.0, 25.0); ]

这是我用手指移动的对象的代码:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    // get current touch location
    UITouch *touch = [[event touchesForView:self.view] anyObject];
    CGPoint point = [touch locationInView:self.view];
    // update location of the image
    basketView.center = CGPointMake(point.x, basketView.center.y);


}

如何访问 flakeView 动画的presentationLayer,以便可以检测两个对象何时相交?


您只需要保留对您的两种观点的引用即可。那么你所要做的就是:

if(CGRectIntersectsRect(((CALayer*)basketView.layer.presentationLayer).frame, 
    ((CALayer*)flakeView.layer.presentationLayer).frame)) {
    //handle the collision
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问动画的presentationLayer以检测碰撞 的相关文章

随机推荐

  • 如何从它所在的所有表中选择一个列?

    我有许多具有相同列 customer number 的表 我可以通过查询获取所有这些表的列表 SELECT table name FROM ALL TAB COLUMNS WHERE COLUMN NAME customer number
  • 编写 $.cookie 以在多表单页面提交时显示表单

    使用 cookie 编写一个页面 以便在多表单页面提交时显示表单 我看到类似的问题在涉及到这个特定代码时没有得到解答 我读了又读 似乎这应该可行 是的 jquery 很新 1 周 我有容器 div 类 每个容器都有一个 p 切换来显示 隐藏
  • 使用 for 表达式从可能为空的 JSON 值中提取选项

    我有一个 JSON 文档 其中某些值可以为空 在 json4s 中使用 for 表达式 我如何能够产生 None 而不是什么也不产生 当任一字段的值相同时 以下内容将无法产生FormattedID or PlanEstimate is nu
  • 升压::正则表达式_替换

    目前我在 boost regex 方面遇到问题 我需要找到合适的单词 替换 与相应的词 我的代码现在看起来像这样 std string name ptap std string name regex b name b boost regex
  • 如何使用 awk 重命名重复行?

    我有一个包含 100 万行的文件 其中一些行是重复的 我想通过附加 variant 一个数字来重命名重复的行 该文件的格式如下 I am a test line She is beautiful need for speed Nice da
  • java 类文件中的泛型类型存储在哪里?

    我很清楚 编译 Java 代码时泛型类型会被删除 1 5 JVM 使用哪些信息 属性 来实现getGenericType ETC 它们存储在Signature属性 参见第 4 8 8 节更新了 Java 虚拟机规范 以及第 4 4 4 节关
  • html中变量前面的点表示什么?

    总的来说 我对 html 和 web 编码很陌生 下面的代码中变量前面的句点表示什么 JS code Thanks 这些不是变量 这些是 CSS 选择器 它们代表每个示例中具有该类的 HTML 节点 div class page title
  • Python 变长嵌套循环

    我试图在 python 中嵌套一个可变长度的 for 循环 并且能够重用这些变量 for i in range 0 256 for j in range 0 256 for k in range 0 256 myvar i j k 在上面的
  • 删除id最大的地方

    我想删除 order id 最大的行 我尝试了以下方法 DELETE FROM orders WHERE MAX order id 但这是错误的 还有其他想法吗 感谢您的时间 第一个想法 以及许多其他完全相同的想法 DELETE FROM
  • UML 类图中的 Java 服务器页面 (.JSP) 文件

    我正在为即将开始的项目编写设计 我想知道应该如何在我创建的 UML 类图中表示视图 jsp 文件 由于 jsp 文件不是类 它们适合放在这里吗 我认为不会 因为这是一个类图 但我不确定我应该如何表示这些 有什么想法吗 JSP 文件被认为是视
  • 安全 getElementById 或尝试确定 GUI 中是否存在 ID

    Method UiInstance getElementById ID 总是返回GenericWidget对象 即使 ID 不存在 有什么方法可以找出我的应用程序中不存在返回的对象 或者检查 UI 是否包含具有给定 ID 的对象 使用 GU
  • 安装 Docker Windows Server 2019:术语“docker”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称

    尝试在 Windows Server 2019 及以下版本上以进程隔离方式安装 Docker这些步骤 我无法在此服务器上使用 Hyper V 在管理模式下运行 PowerShell 时 然而我得到了错误 Get PackageProvide
  • 如何在 Jetty 中使用 setThreadPool()

    我想看看如何使用setThreadPool 功能 假设我的主要课程如下 import javax servlet SingleThreadModel import org eclipse jetty server Server public
  • 如何在没有 Framework 3.5 的 PC 上安装 WPF 应用程序

    我有一个关于如何将 WPF 应用程序部署到没有 Framework 3 5 的 PC 上的问题 如果一台PC只安装Windows XP和sp3 是否可以设计一个可以直接在这台PC上安装WPF应用程序的安装包 情况是这样的 我设计了一个简单的
  • Python 3.5、ldap3 和modify_password()

    我一直在努力尝试通过脚本发送更新我自己密码的请求 这是代码 usr bin python3 5 from ldap3 import Server Connection NTLM ALL server Server ldap 192 168
  • 在 Python 中使用正则表达式为单词添加引号

    我试图使用正则表达式将句子中的每个单词替换为相同的单词但引用 我所说的单词只是字母 没有数字 例如4 python code应转换为4 python code 但是这段代码产生了错误的结果 gt gt gt import re gt gt
  • 以编程方式从 LocalizedResource.properties 读取密钥

    我能够将 LocalizedResource properties 与 uibinder 一起使用 假设我有在 java 文件中以编程方式创建的小部件 如何根据用户选择的语言 en fr etc 从 LocalizedResource pr
  • 如何将实体的一部分公开为DataContract?

    到目前为止 在使用 WCF 时 我始终将整个 EF 生成的实体或 POCO 通过修改 T4 模板以在 POCO 和属性上包含 DataContract 和 DataMember 公开为 DataContract 现在 我遇到了一种情况 我无
  • 如何从 C# 应用程序内部检查新 Microsoft Edge Chromium 的版本?

    有谁知道如何从 C 应用程序内部检查 PC 上安装的 Edge Chromium 版本 我在发布之前进行了搜索 在该线程的评论中 有人提供了一种从旧版 Microsoft Edge 获取版本号的方法 如何检测是否安装了 Microsoft
  • 访问动画的presentationLayer以检测碰撞

    我有两个对象 一个通过动画移动 另一个在我用手指拖动时移动 我希望能够使用 CGIntersectsRect 检测两者何时 碰撞 然而 我听说为了用动画来做到这一点 我需要访问表示层以从那里获取值 然而 我不知道该怎么做 这是我的动画代码