【问题标题】:Objective-J and Cappuccino and CGRectObjective-J 和 Cappuccino 和 CGRect
【发布时间】:2011-03-20 09:30:37
【问题描述】:

我对 Objective-j 和框架还很陌生,所以我试图深入了解一些代码,但我对对象(或结构)CGRect 迷失了方向。

这里是完整的文档:Cappuccino

好的,现在我正在深入研究并尝试了解 CPView 类的工作原理:CPView.j

现在,我到处都能看到 CGRect 对象(或结构),但我终其一生都无法弄清楚 CGRect 的定义位置。这是如何运作的?我觉得我错过了什么。

我找到的最接近的是 CGGeometry.jCGGeometry.h,但仍然没有定义 CGRect 结构或对象。

有人可以帮帮我吗?如何实例化一个 CGRect 结构或对象,它在哪里定义?它包含什么?等等等等……

我知道创建 CGRect 的主要方法是使用 CGRectMake 函数,如 here 所述。

我只是不知道这是如何工作的。

谢谢。

更新:

再看一下代码:第 23 行、第 30 行和第 37 行,看起来有点像 JavaScript 对象描述。它是否正确?我不确定……翻译这些 .j 文件的东西是否知道 CGRect 已经是什么?这就是我们可以使用 (CGRect) 类型的种姓和对象的原因吗? CGRect 似乎与我迄今为止看到的任何其他对象不同,我想知道为什么:)。

再次感谢。

00023 #define _CGPointMake(x_, y_) { x:x_, y:y_ }
00024 #define _CGPointMakeCopy(aPoint) _CGPointMake(aPoint.x, aPoint.y)
00025 #define _CGPointMakeZero() _CGPointMake(0.0, 0.0)
00026 
00027 #define _CGPointEqualToPoint(lhsPoint, rhsPoint) (lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y)
00028 #define _CGStringFromPoint(aPoint) ("{" + aPoint.x + ", " + aPoint.y + "}")
00029 
00030 #define _CGSizeMake(width_, height_) { width:width_, height:height_ }
00031 #define _CGSizeMakeCopy(aSize) _CGSizeMake(aSize.width, aSize.height)
00032 #define _CGSizeMakeZero() _CGSizeMake(0.0, 0.0)
00033 
00034 #define _CGSizeEqualToSize(lhsSize, rhsSize) (lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height)
00035 #define _CGStringFromSize(aSize) ("{" + aSize.width + ", " + aSize.height + "}")
00036 
00037 #define _CGRectMake(x, y, width, height) { origin: _CGPointMake(x, y), size: _CGSizeMake(width, height) }

【问题讨论】:

    标签: cappuccino objective-j


    【解决方案1】:

    简短的回答是肯定的,CGRects 与其他 Cappuccino 对象不同。 CGRects 不是 CPObjects,而只是带有 x、y、width 和 height 成员的 Javascript 对象。当您创建一个时,例如使用 CGRectMake,您实际上是在调用一个看起来像这样的简单函数:

    function CGRectMake(_x, _y, _width, _height) 
    { 
        return { 
            origin: { x:_x, y:_y }, 
            size: { width: _width, height: _height } 
        };
    }
    

    您找到的声明是 Cappuccino 本身用于内联 CGRectMake 函数以获得更好性能的宏。在一天结束时使用宏来实际定义在您自己的代码中使用的导出的 CGRectMake 函数(这就是为什么我上面的 sn-p 只是一个近似值。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多