require "extern"
--这个类找到了可视区域的9个点的坐标:左上、上的中点、右上、左的中点、左下、下的中点、右下、右的中点。一般用于使用相对坐标的场合,解决自适应屏幕的问题
--改写自VisibleRect.cpp
VisibleRect = class("VisibleRect")
VisibleRect.__index = VisibleRect --CCRect VisibleRect::s_visibleRect;
--创建一个CCRect实例:s_visibleRect(初始高、宽都是0)
VisibleRect.s_visibleRect = CCRect:new()
--[[
void VisibleRect::lazyInit() {
if (s_visibleRect.size.width == 0.0f && s_visibleRect.size.height == 0.0f) {
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); s_visibleRect.origin = pEGLView->getVisibleOrigin();
s_visibleRect.size = pEGLView->getVisibleSize();
}
}
]]
function VisibleRect:lazyInit()
if (self.s_visibleRect.size.width == 0.0 and self.s_visibleRect.size.height == 0.0) then
--sharedOpenGLView:get the shared main open gl window
local pEGLView = CCEGLView:sharedOpenGLView();
self.s_visibleRect.origin = pEGLView:getVisibleOrigin();
self.s_visibleRect.size = pEGLView:getVisibleSize();
end
end --返回一个CCRect,就是可视区域
function VisibleRect:getVisibleRect()
self:lazyInit();
-- return CCRectMake(s_visibleRect.origin.x, s_visibleRect.origin.y, s_visibleRect.size.width, s_visibleRect.size.height);
return CCRectMake(self.s_visibleRect.origin.x, self.s_visibleRect.origin.y, self.s_visibleRect.size.width, self.s_visibleRect.size.height);
--CCRectMake,输入坐标、长宽,输出一个CCRect
end function VisibleRect:left()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x, self.s_visibleRect.origin.y+self.s_visibleRect.size.height/);
end function VisibleRect:right()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width, self.s_visibleRect.origin.y+self.s_visibleRect.size.height/);
end function VisibleRect:top()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width/, self.s_visibleRect.origin.y+self.s_visibleRect.size.height);
end function VisibleRect:bottom()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width/, self.s_visibleRect.origin.y);
end function VisibleRect:center()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width/, self.s_visibleRect.origin.y+self.s_visibleRect.size.height/);
end function VisibleRect:leftTop()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x, self.s_visibleRect.origin.y+self.s_visibleRect.size.height);
end function VisibleRect:rightTop()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width, self.s_visibleRect.origin.y+self.s_visibleRect.size.height);
end function VisibleRect:leftBottom()
self:lazyInit();
return self.s_visibleRect.origin;
end function VisibleRect:rightBottom()
self:lazyInit();
return ccp(self.s_visibleRect.origin.x+self.s_visibleRect.size.width, self.s_visibleRect.origin.y);
end

quick-cocos2d-x之testlua之VisibleRect.lua的更多相关文章

  1. quick-cocos2d-x之testlua之mainMenu.lua

    require "helper" require "testResource" require "ActionsTest.ActionsTest&qu ...

  2. quick 2.23 它们的定义c++代码lua与总结的一些细节

    它们的定义c++代码lua与总结的一些细节 参考:点击打开链接 1.自己定义 XXX.cpp .XXX.h 2.D:\quick\quick-cocos2d-x-2.2.3-rc\lib\cocos2 ...

  3. 【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】

    为什么要使用Lua进行游戏开发?转载请注明出处http://www.cnblogs.com/zisou/p/cocos2dx-lua1.html 上面一个问题我觉得在我们使用Lua之前需要深入思考的, ...

  4. cocos2dx的lua绑定

    一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...

  5. lua学习-1

    最近打算学习quick cocos2dx,所以首先打算学习一下lua这门语言,Lua 是一个小巧的脚本语言,轻量级,便于扩展. Lua脚本基本的数据类型:nil.boolean.number.stri ...

  6. LuaJavaBridge - lua与java互操作的简单解决方案

    引入:Android平台代码和Lua代码的交互均通过C++和Java交互,Lua再和C++交互(lua  <==> C++ <==> java) 我最开始遇见这种lua调用ja ...

  7. cocos lua 加密方案

    cocos2d使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用. 目前所指的解决方案有2 ...

  8. cocos2dx之lua绑定简析

    一.总原则:c++对象的生命期不依赖lua gc管理,手动创建的对象要手动销毁 二.引擎层在设计上就是支持脚本概念的(也就是说脚本的使用是“侵入式”的),与lua打交道的代码都封在CCLuaEngin ...

  9. Cocos2d-x 3.2 Lua演示样例CurrentLanguageTest(当前语言环境)

    Cocos2d-x 3.2 Lua演示样例CurrentLanguageTest(当前语言环境) 转载请注明:IT_xiao小巫 本篇博客介绍Cocos2d-x 3.2给我们提供的一个样例.获取当前程 ...

随机推荐

  1. NUnit笔记

    注意:单元测试中,Case 与 Case 之间不能有任何关系 测试方法不能有返回值,不能有参数,测试方法必须声明为 public [TestFixture] //声明测试类 [SetUp] //建立, ...

  2. Hadoop 2.6.4单节点集群配置

    1.安装配置步骤 # wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm # rpm -i ...

  3. mysql--1130ERROR

    问题一:mysql 用户登录不用验证密码(用户已设密码) 安装好mysql 后,我发现我设立了密码,同样可以不用密码就能登陆 cmd>mysql cmd>select current_us ...

  4. !!!!!122. Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  5. 【AT91SAM3S】英倍特串口示例工程05-UART中,串口是怎样初始化的

    在这个示例工程的main.c文件中,进入main之后,没有发现串口功能的任何配置.直接使用了printf这个东西进行输出.将软件下载到开发板上之后,在电脑端使用串口软件,可以看板子有数据发来.说明这个 ...

  6. WCF数据通讯

    Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NET Fra ...

  7. yield个人理解及简明示例

    1.写法有2种:yield return <expression>和yield breakyield用于在迭代中返回一个值,并将值带入下一次迭代中.yield break则意味着停止迭代. ...

  8. httperf学习笔记(CentOS-6.6环境下安装配置)

    新工作已经找到了,最近在忙着熟悉环境,昨天领导让我接触下httperf压力测试工具 百度了下,相关的文档,准备着手配置一个测试环境基于linux系统httperf+autobench+gnuplot, ...

  9. cs11_c++_lab1

    lab1.cpp #include "Point.hh" #include <iostream> #include <cmath> using namesp ...

  10. maximo功能修改(初步理解)

    已接触IBM公司的MAXIMO近三个月,在这时间里自己对maximo也有所了解,今天将自己总结写在这里,方便自己的温习和大家的参考,不足之处还望指出,我一定在第一时间内修改. 今天在公司所做的就是完善 ...