cocos2dx中node的pause函数(lua)
time:2015/05/14
- void Node ::pause ()
- {
- _scheduler-> pauseTarget(this );
- _actionManager-> pauseTarget(this );
- _eventDispatcher-> pauseEventListenersForTarget(this );
- }
分析:
- for k, v in pairs(layer:getChildren()) do
- v:pause()
- end
2. Lua的pause函数为什么没有起作用?
- --test page@2015/04/15 : pause
- local moveBy = cc.MoveBy:create(, cc.p(, ))
- local actionMove = cc.Sequence:create(moveBy, moveBy:reverse());
- layer:runAction(cc.RepeatForever:create(actionMove))
- local btnPause = cc.MenuItemImage:create("Images/pauseBtn.png","Images/pauseBtn.png");
- btnPause:setScale()
- local bPaused = false;
- local call = function(sender)
- if not bPaused then
- bPaused = true;
- layer:pause();
- print("pause ... ")
- else
- bPaused = false;
- layer:resume();
- print("resume ... ")
- end
- end
- -- btnPause:addTouchEventListener(call)
- btnPause:registerScriptTapHandler(call)
- local menu = cc.Menu:create()
- menu:setPosition(cc.p(, ))
- menu:addChild(btnPause)
- layer:addChild(menu)
- --schedule
- -- local fnActionPause = function(dt)
- layer.fnActionPause = function(dt)
- print("fnActionPause ... ", dt)
- local sprite = cc.Sprite:create("Images/CyanTriangle.png")
- local act = cc.DelayTime:create()
- layer:addChild(sprite)
- sprite:setPosition(VisibleRect:center())
- local callRemove = function()
- sprite:removeFromParent(true)
- end
- sprite:runAction(cc.Sequence:create(act, cc.CallFunc:create(callRemove)))
- end
- local scheduler = cc.Director:getInstance():getScheduler();
- _schedule = scheduler:scheduleScriptFunc(layer.fnActionPause, , false)
- --test end
4. lua和c++接口的区别
(1)c++
* c++增加定时器或者事件回调函数,不管是selector还是c++ 11中的std::function,都需要保存回调函数的类对象target
* 拿定时器来说Scheduler::schedule():会把事件加到类的成员变量_hashForTimers中,pauseTarget函数就会处理该结构
- void Scheduler::schedule(const ccSchedulerFunc& callback, void *target, float interval, unsigned int repeat, float delay, bool paused, const std::string& key)
- {
- CCASSERT(target, "Argument target must be non-nullptr");
- CCASSERT(!key.empty(), "key should not be empty!");
- tHashTimerEntry *element = nullptr;
- HASH_FIND_PTR(_hashForTimers, &target, element);
- if (! element)
- {
- element = (tHashTimerEntry *)calloc(sizeof(*element), );
- element->target = target;
- HASH_ADD_PTR(_hashForTimers, target, element);
- // Is this the 1st element ? Then set the pause level to all the selectors of this target
- element->paused = paused;
- }
//下面的省略掉...
}
(2)lua
* lua添加事件的注册函数为Scheduler::scheduleScriptFunc
*会把事件回调函数以句柄的方式存放在另外一个结构:_scriptHandlerEntries中
* 结构_scriptHandlerEntries只有在Scheduler::update函数中同_hashForTimers一样的处理
*但是!没有pause函数会处理这个结构!!!--->所以理论上lua的事件是没有这个层级上的暂停的(paused=true);
总结
cocos2dx中node的pause函数(lua)的更多相关文章
- 【cocos2dx中Node类getParent和getChildByTag()】学习体会
參考http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d3/d82/classcocos2d_1_1_node.html 当中和child.parent有关的成员函数 ...
- cocos2d-x中Node中重要的属性
Node还有两个非常重要的属性:position和anchorPoint. position(位置)属性是Node对象的实际位置.position属性往往还要配合使用anchorPoint属性,为了将 ...
- cocos2d-x中Node与Node层级架构
Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...
- 【转载】cocos2d-x教程 Mac系统下搭建Lua的编码环境
原文链接:http://blog.csdn.net/u012945598/article/details/17168831 在使用Lua写脚本的时候大家都会因为没有代码提示导致敲代码的效率有所下降 ...
- cocos2d-x 2.2.0 如何在lua中注册回调函数给C++
cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...
- cocos2dx中使用tolua++使lua调用c++函数
一直想学学cocos2dx中如何使用tolua++工具使得lua脚本调用C++函数,今天就来搞一下,顺便记录下来: 首先,我们打开cocos2dx-2.2.4中projects下的test的VS工程, ...
- Learning Lua Programming (4) Cocos2d-x中Lua编程(一)
刚开始接触cocos2d-x 下的Lua编程,主要参看了李华明大神的博客中的介绍,http://blog.csdn.net/xiaominghimi/article/category/1155088 ...
- 使用BabeLua3.x在cocos2d-x中编辑和调试Lua
BabeLua是一款基于VS2012/2013的Lua集成开发环境,具有Lua语法高亮,语法检查,自动补全,快速搜索,注入宿主程序内对Lua脚本进行调试,设置断点观察变量值,查看堆栈信息等功能. 如何 ...
- 在cocos2d-x中使用LUA
在cocos2d-x中使用LUA 1.注冊LUA脚本引擎 CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCScriptEngineMana ...
随机推荐
- 【es6】变量解构赋值
1.数组解构赋值 let [a,b,c]=[1,2,3];//数组解构赋值,注意:左右两边格式需一致 let [a,b]=[1,2,3];//不完全解构,取位置靠前的值 let [a=1,b]=[un ...
- windows7用WMware安装Linux虚拟机详细步骤
一.安装环境 windows7操作系统物理机VMware Workstation 软件(可以在网上下载)CentOS6.5镜像文件(其他版本都大同小异,这里以CentOS6.5为例)Cnetos6.5 ...
- IPC之binder机制
我们知道,在Android系统中,每一个应用程序都运行在独立的进程中,这也保证了当其中一个程序出现异常而不会影响另一个应用程序的正常运转.在许多情况下,我们activity都会与各种系统的servic ...
- javascript中的function 函数名(){} 和 函数名:function(){}有什么不同
function functionName(){};这是定义一个函数 functionName:function(){};是设置一个对象的方法. 下面举一个例子: <html> <h ...
- 解决图片浮动调节不了的问题(使用vertical-align属性)
vertical-align: middle; vertical-align 属性设置元素的垂直对齐方式. baseline 默认.元素放置在父元素的基线上.sub 垂直对齐文本的下标.super ...
- springMVC流程分析
下面是DispatcherServlet的doDispatch()方法 protected void doDispatch(HttpServletRequest request, HttpServle ...
- SQL语句映射文件(1)resultMap
SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ...
- redis系统和通用函数
construct函数: 用来创建一个redis客户端. redis = new Redis(); connect函数:连接到一个redis实例. 参数如下: host:字符串类型 可以使一个HO ...
- 可变参数的lambda表达式
delegate int mydelegate(params int[] a); class Program { static void Main(string[] args) { //接收可变参数的 ...
- ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事
想到这个问题完全是一个意外吧,是在寻找另外一个问题答案的过程中,才对验证方法与浏览器服务器交互机制的关系有了清晰的认识. 先说下验证方法,验证方法分为前台验证和后台验证. 前台验证就是类似jQuery ...