码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2d-x_3.2 Demo学习之VisibleRect类

时间:2014-09-15 22:40:29      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   文件   2014   div   sp   

这个类主要提供屏幕各个特殊位置的坐标。附上头文件代码:

 1 class VisibleRect
 2 {
 3 public:
 4     static cocos2d::Rect getVisibleRect();// 获取屏幕矩形
 5 
 6     static cocos2d::Vec2 left();        // 左中,
 7     static cocos2d::Vec2 right();        // 右中
 8     static cocos2d::Vec2 top();        // 顶中
 9     static cocos2d::Vec2 bottom();    // 底中
10     static cocos2d::Vec2 center();        // 中心
11     static cocos2d::Vec2 leftTop();    // 左顶
12     static cocos2d::Vec2 rightTop();    // 右顶
13     static cocos2d::Vec2 leftBottom();    // 左底
14     static cocos2d::Vec2 rightBottom();    // 右底
15 private:
16     static void lazyInit();// 获取屏幕矩形
17     static cocos2d::Rect s_visibleRect;// 用于保存屏幕矩形
18 };

上面都是获得矩形特殊位置的函数,大概位置,请看如下图:

bubuko.com,布布扣

Rect(x,y,width,height)是以屏幕左上角为(0,0)基准,width是宽度,height是高度。在Cocos2d-x里可以分步表示成如下:

Vec2 origin;// 左上角坐标(x,y)
Size size;// 尺寸(width,height)

其实这个就是Rect类里的表示x,y,width,height的成员变量。

接下来我们来看VisibleRect.cpp文件,代码附上:

 1 void VisibleRect::lazyInit()
 2 {
 3     s_visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect();
 4 }
 5 
 6 Rect VisibleRect::getVisibleRect()
 7 {
 8     lazyInit();
 9     return s_visibleRect;
10 }
11 // (0,width/2)
12 Vec2 VisibleRect::left()
13 {
14     lazyInit();
15     return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y+s_visibleRect.size.height/2);
16 }
17 // (width,height/2)
18 Vec2 VisibleRect::right()
19 {
20     lazyInit();
21     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y+s_visibleRect.size.height/2);
22 }
23 // (width/2,height)
24 Vec2 VisibleRect::top()
25 {
26     lazyInit();
27     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y+s_visibleRect.size.height);
28 }
29 // (width/2,0)
30 Vec2 VisibleRect::bottom()
31 {
32     lazyInit();
33     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y);
34 }
35 // (width/2,height/2)
36 Vec2 VisibleRect::center()
37 {
38     lazyInit();
39     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y+s_visibleRect.size.height/2);
40 }
41 // (0,height)
42 Vec2 VisibleRect::leftTop()
43 {
44     lazyInit();
45     return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y+s_visibleRect.size.height);
46 }
47 // (width,height)
48 Vec2 VisibleRect::rightTop()
49 {
50     lazyInit();
51     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y+s_visibleRect.size.height);
52 }
53 // (0,0)
54 Vec2 VisibleRect::leftBottom()
55 {
56     lazyInit();
57     return s_visibleRect.origin;
58 }
59 // (width,0)
60 Vec2 VisibleRect::rightBottom()
61 {
62     lazyInit();
63     return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y);
64 }

这个类实现比较简单,就是获取特殊位置的坐标。

Cocos2d-x_3.2 Demo学习之VisibleRect类

标签:style   blog   http   color   os   文件   2014   div   sp   

原文地址:http://www.cnblogs.com/studweijun/p/3973600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!