- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我用来检测 2 个 UIImageViews
是否相互碰撞的代码。
if (CGRectIntersectsRect(Appy.frame, Bottom.frame)) {
[self GameOver];
}
此时正在检测物体的边缘。
我如何更改它以检测 UIImageView 内图像的边缘。
里面的图像有一个透明的背景,并且“实际上是圆形的”,所以如果 UIImageView 的角碰到另一个 UIImageView 的角,它们就会发生碰撞,但图像实际上并没有碰到,所以它让事情看起来有点“困惑”
编辑*
这些是我得到的错误
这是我的.h
编辑:下面是我的代码现在的样子
.m 方法
if (CGRectIntersectsRect([self: RectBox:Appy].frame, Bottom.frame)) {
[self GameOver];
}
.h
-(UIImageView *)RectBox:(UIImageView *)box;
为了确定,我把它放在我的 .h 中最后一个 @end
的上面。
我仍然“正在使用未声明的标识符‘RectBox’”
编辑
编辑
这里是我调用方法的代码
-(void) PipeMoving2{
PipeTop2.center = CGPointMake(PipeTop2.center.x -2, PipeTop2.center.y);
PipeBottom2.center = CGPointMake(PipeBottom2.center.x -2, PipeBottom2.center.y);
if (PipeTop2.center.x < -53+33) {
[self PlacePipe2];
}
if (PipeTop2.center.x == 62) {
[self Score];
}
if (CGRectIntersectsRect(Appy.frame, PipeTop2.frame)) {
[self GameOver];
}
if (CGRectIntersectsRect(Appy.frame, PipeBottom2.frame)) {
[self GameOver];
}
if (CGRectIntersectsRect(Appy.frame, Top.frame)) {
[self GameOver];
}
if (CGRectIntersectsRect([self RectBox:Appy].frame, Bottom.frame)) {
[self GameOver];
}
}
我想这就是您需要看到的全部内容吧?
最佳答案
将其更改为以下内容:
if(CGRectIntersectsRect([self RectBox:Image].frame, Bottom.frame))
我从你的图片中注意到的另一件事是你将方法放在另一个方法中。
例如:(我从你的图片中看到的,似乎)
- (void)yourMethod
{
......
if (CGRectIntersectsRect([self RectBox:Image].frame, Bottom.frame))
{
[self GameOver];
}
.....
//etc etc
//and then you have this
-(UIImageView *)RectBox:(UIImageView *)box
{
box.frame = CGRectMake(box.frame.origin.x +15,
box.frame.origin.y +15,
box.frame.size.width -30,
box.frame.size.height-30);
return box;
}
....
}
你应该提取它并将它放在你的方法之外,所以它变成:
- (void)yourMethod
{
......
if (CGRectIntersectsRect([self RectBox:Image].frame, Bottom.frame))
{
[self GameOver];
}
.....
//etc etc
....
}
//take it out and place it here, for example
- (UIImageView *)RectBox:(UIImageView *)box
{
box.frame = CGRectMake(box.frame.origin.x +15,
box.frame.origin.y +15,
box.frame.size.width -30,
box.frame.size.height-30);
return box;
}
更新评论中与原始问题不完全相关的问题,但这是我从您的代码中发现的:
你的角色改变大小的原因可能源于你在你的 RectBox
方法中改变它的 frame
。
这里是该方法的粗略重新定义,以便我们可以“保留”角色的框架:
- (CGRect)RectBox:(UIImageView *)box
{
CGRect tempRect = CGRectMake(box.frame.origin.x +15,
box.frame.origin.y +15,
box.frame.size.width -30,
box.frame.size.height-30);
return tempRect;
}
并对调用进行更改。
例如:
if (CGRectIntersectsRect([self RectBox:Image], Bottom.frame))
{
[self GameOver];
}
关于运动,请检查您为 NSTimer
设置的频率。我不会比 0.1 更频繁。
希望这对您有所帮助。
关于ios - CGRectIntersectsRect : how change the detection to the edge of the picture inside UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979888/
我想创建一个(最好)HTML 代码,将内容从另一个小页面加载到当前网站。小页面的内容是一组带有动态变化的图像的 anchor (因此将它们编码到要显示它们的页面中是不切实际的)。这样的功能是否可以在纯
这个问题在这里已经有了答案: What does a space mean in a CSS selector? i.e. What is the difference between .clas
我正在尝试在网站上放置响应图像。我有以下代码 图片元素的大小将由包含的 div 决定。 包含的 div 的大小将是随机的。可以直接放在.container里,也可以放在.col-sm-
我正在使用 Opentok.js,我想以画中 Canvas 局显示订阅者和发布者。当我调整窗口大小时,它应该具有响应性并保持比例,以及如何以全屏方式获取视频,即使视频是“320x240”吗? 最佳答案
html 元素 video有一个名为 disablePictureInPicture 的属性虽然它似乎只适用于 chrome,但它工作得很好。 由于我只能找到有关此问题的旧帖子,这些帖子最终没有解决或
我正在尝试在我的应用中支持分屏功能。 目前目标SDK是27 defaultConfig { applicationId "com.myvestige.vestigedeal"
编辑:本文末尾的 Anwser。 借助内置的 Facebook SDK 函数 Request(),我正在尝试获取 Facebook 用户的头像。 我正在使用 /me/picture 调用来获取个人资料
错误消息 java.lang.IllegalStateException: enterPictureInPictureMode: Current activity does not support p
我可以使用 jquery(或 javascript)强制 html5 video 播放器以画中画 模式播放吗?(下图) . 这是我使用 jquery 3.3.1(由 Google 托管)的个人网站。现
假设文本 = T,图像 = M 桌面订单: M T 需要手机下单: T M 我需要桌面和移动设备上的响应行为。 .container{width:100%;} #image {width:50%;}
使用相机 API 拍照后,这张照片会显示在屏幕/此 Activity 上。我想将这张覆盖整个屏幕的图片发送到另一个名为 PictureEditor 的 Activity 。在那里我将添加可以编辑图片的
我使用 YouTube iframe js API 在 Firefox 中收到此警告 如何处理? 最佳答案 YouTube API 正在向浏览器发送调用,但浏览器响应说“我不支持”,然后在控制台中让您
我正在使用 标签。我的目标群体使用现代浏览器,所以尽快 Firefox supports WebP没有必要使用标签。 现在: 很快: 有没有办法实现 alt
Hello Together 遵循我的代码: public class SampleData : DropCreateDatabaseIfModelChanges { protecte
我在为主 设置正确的宽度和高度时遇到问题img src 块内。 如果我把它留给 宽度="100%"高度="100%"视觉上还可以,但 Google 搜索 PageSpeed
我正在尝试使图片元素工作,但它不会加载后备 img Locat
打印下面的图片时遇到一些问题。 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (16 times) 2 2 2 2 2 2 2 2 2 2 2 2
我想不通为什么我的 img 在 picture 标签中不想显示?有任何想法吗? 谢谢! 最佳答案 你的图片路径有误。看我的例子
我有一种情况需要将 CSS 文件中的图像提供给 goJs go.picture 方法。不是来自交叉起源。如何通过。 GO(go.Picture, {source: 'images/sample.png
我需要一些帮助来理解为什么有人会在网页中加载这样的图像?我的意思是最后的两个标签和标签。 如何决定加载哪个图像? 背后有框架吗? 这是否意味着它加载两个图像并以不同的分辨率在它们之间切换?
我是一名优秀的程序员,十分优秀!