2011-05-23 96 views
-2

总而言之参数2 ....不兼容的类型为“CGRectContainsPoint”

我得到不兼容的类型为“CGRectContainsPoint”参数2上的网格的[X] [Y] .frame部分([rubin1 frame],grid [x] [y] .frame),([rubin2 frame],grid [x] [y] .frame)和([rubin3 frame],grid [x] [y ]。帧)。我尝试了[grid [x] [y] frame],但得到了同样的错误。

我想能到我释放他们在砖上来回走动鲁宾1,对电网rubin2和rubin3。当我释放他们的砖,然后我想这块砖消失以及任何其他相同类型的砖是,鲁宾的地方在左边(无论身在何处,他们都在网格)

for (int y = 0; y < BRICKHEIGHT; y++) 
{ 
    for (int x = 0; x < BRICKWIDTH; x++) 
    { 


     if (CGRectContainsPoint([rubin1 frame], grid[x][y].frame)) { 

      if(grid[x][y].tag == 1){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 2){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 3){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 4){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 5){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 6){ 

       ruby--; 
       rubin1.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 


     } 
     if (CGRectContainsPoint([rubin2 frame], grid[x][y].frame)) { 

      if(grid[x][y].tag == 1){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 2){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 3){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 4){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 5){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 6){ 

       ruby--; 
       rubin2.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 

     } 
     if (CGRectContainsPoint([rubin3 frame], grid[x][y].frame)) { 

      if(grid[x][y].tag == 1){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 2){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 3){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 4){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 5){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 
       [self PlayerScore: x y: y]; 

      } 
      else if(grid[x][y].tag == 6){ 

       ruby--; 
       rubin3.alpha = 0; 
       grid[x][y].alpha = 0; 





      } 
     } 
    } 
} 

回答

0

它期望一个点作为第二个参数而不是CGRect框架。尝试grid [x] [y] .frame.origin。原点为您提供了框架CGRect的右上角,并且调整了CGRect的宽度/高度。

+0

感谢您的意见:) – iphonedevonthemake 2011-05-23 06:28:02

+0

再次嘿!我意识到我做错了方式..这就是为什么它不工作...我用CGRectContainsPoint而不是使用CGRectIntersectsRect。它现在工作正常。感谢所有帮助 – iphonedevonthemake 2011-05-25 04:01:02

0

你必须这样使用。例如:

UITouch *touch = [touches anyObject]; 
CGPoint location = [touch locationInView:touch.view]; 

if(CGRectContainsPoint(myimage.frame, location) == 0){ 
//always end up here 
} 
+0

这是一个很好的观点,除了确保引用CGPoint而不是CGRect之外 - 还需要确保该点位于正确的坐标空间中。我实际上会推荐使用[touch locationInView:[grid [x] [y] superview]];这将比较触点与网格物品容器的坐标空间。 – 2011-05-23 05:24:43

+0

我明白了......感谢您的建议。我今晚会试一试,并告诉你结果如何:)顺便问一下,我怎样才能得到剩下的代码来移除网格上所有与我放置的类型相同的砖块rubin或者你展示给我的例子是否也在做这件事? – iphonedevonthemake 2011-05-23 06:27:39

+0

再次嘿!我意识到我做错了方式..这就是为什么它不工作...我用CGRectContainsPoint而不是使用CGRectIntersectsRect。它现在工作正常。感谢所有的帮助 – iphonedevonthemake 2011-05-25 04:00:54