利用EnterFrame做出行走的效果,效果图如下:

具体操作:

1 给self多加一个bg1用作与bg无限循环换位

2 在AnotherScene:onEnter方法里面新增onEnterFrame的排成

3 写了一个简单的onEnterFrame方法用作每帧去更新

完整代码如下:

 local AnotherScene = class("AnotherScene", function()
return display.newScene("AnotherScene")
end) function AnotherScene:ctor()
self.speed = ;
self.curBehaviorId = ;
self.layer = display.newLayer()
self:addChild(self.layer)
self.layer:setTouchEnabled(true)
self.behaviors = {"anim_walk","anim_eat","anim_placeladder","anim_idle","anim_ladderwalk","anim_laddereat","anim_death"};
self.bg = display.newSprite("battle.png",display.cx, display.cy)
self.bg1 = display.newSprite("battle.png",display.cx+self.bg:getContentSize().width, display.cy)
self.layer:addChild(self.bg)
self.layer:addChild(self.bg1)
end function AnotherScene:onTouch(event, x, y)
print("Touched at %d %d",x,y)
self.curBehaviorId = self.curBehaviorId + ;
if self.curBehaviorId > #self.behaviors then
self.curBehaviorId = ;
end
print("Now playing ", self.curBehaviorId , #self.behaviors, self.behaviors[self.curBehaviorId])
self.animation:play(self.behaviors[self.curBehaviorId])
end function AnotherScene:onEnterFrame(dt)
local tempX = self.bg:getPositionX();
local tempW = self.bg:getContentSize().width;
tempX = tempX - self.speed;
if tempX <= display.cx - tempW then
self.bg:setPositionX(display.cx + tempW)
else
self.bg:setPositionX(tempX)
end tempX = self.bg1:getPositionX();
tempW = self.bg1:getContentSize().width;
tempX = tempX - self.speed;
if tempX <= display.cx - tempW then
self.bg1:setPositionX(display.cx + tempW)
else
self.bg1:setPositionX(tempX)
end
end function AnotherScene:onEnter()
ui.newTTFLabel({text = "Yo! Yo! Check Out!", size = , align = ui.TEXT_ALIGN_CENTER})
:pos(display.cx, display.cy)
:addTo(self.layer) local manager = CCArmatureDataManager:sharedArmatureDataManager()
manager:addArmatureFileInfo("Zombie.png","Zombie.plist","Zombie.xml")
local zombie = CCNodeExtend.extend(CCArmature:create("Zombie_ladder"))
zombie:connectMovementEventSignal(function(__evtType, __moveId)
echoInfo("movement, evtType: %d, moveId: %s", __evtType, __moveId)
end)
self.animation = zombie:getAnimation()
self.animation:setAnimationScale(0.5)
self.animation:play("anim_walk")
zombie:setPosition(display.cx, display.cy)
zombie:setScaleX(-)
self.layer:addChild(zombie)
self.layer:addTouchEventListener(function(event,x,y)
return self:onTouch(event, x,y)
end)
self.layer:setTouchEnabled(true)
self:scheduleUpdate(function(dt)
self:onEnterFrame(dt)
end)
end
return AnotherScene

也可以去我的git里面下载源代码和资源:https://github.com/AdoBeatTheWorld/waytomobile

game003即为当前的项目,问我为啥没有把项目分出来,我只能说我.....很.....懒。

Quick Cocos2dx 与 EnterFrame事件的更多相关文章

  1. quick cocos2d-x 入门---井字棋

    学习quick cocos2d-x 第二天 ,使用quick-x 做了一个井字棋游戏 . 我假设读者已经 http://wiki.quick-x.com/doku.php?id=zh_cn阅读了这个链 ...

  2. quick cocos2dx 3.x 配置win32工程

    公司项目主体部分用c++,而ui部分用lua写,所以选择了用quick框架.项目先开发了ios/mac版,这两天试着配置其win32工程,遇到一些问题,记录一下(纯c++版本cocos2dx配置方法应 ...

  3. 【转载】Quick 中的触摸事件

    原文地址 http://cn.cocos2d-x.org/article/index?type=quick_doc&url=/doc/cocos-docs-master/manual/fram ...

  4. cocos2d-x lua 触摸事件

    cocos2d-x lua 触摸事件 version: cocos2d-x 3.6 1.监听 function GameLayer:onEnter() local eventDispatcher = ...

  5. Mac下搭建quick cocos2d-x编译环境

    一. 我知道在你的电脑中一定已经安装好了Xcode(没有自己下载去吧),打开Xcode,开启"偏好设置"对话框(commond + ,).假设打开之后出现的是这种一个对话框,那么直 ...

  6. Quick Cocos2dx Http通讯

    服务端:Python 通讯协议:Http 参考文章: 1 用python实现一个基本的http server服务器 http://blog.sina.com.cn/s/blog_416e3063010 ...

  7. 用Quick Cocos2dx做一个连连看(一)

    呵呵,不知道能不能坚持下来,先写着吧. 预备知识:Quick Cocos2dx 2.2.5基本知识 或者 Cocos2dx基本知识, lua入门 开发工具:Sublime Text 2.0/3.0 原 ...

  8. quick cocos2d-x 2.2.4 window环境调试

    BabeLua简介 BabeLua是一款基于VS2012/2013(简称VS)的免费开源的Lua集成开发环境,在Lua编辑和调试方面,具有如下功能和特性: ●Lua语法高亮 ●语法检查 ●自动补全 ● ...

  9. Cocos2dx之touch事件

    今天看了下ccocos2dx touch事件部分的源码,从CCTouch.CCTouchHandler和CCTouchDispatcher简单的做了分析和总结,先直接看源码吧! 1.CCTouch c ...

随机推荐

  1. zk reconnect

    http://blog.csdn.net/hengyunabc/article/details/41450003 http://blog.csdn.net/hengyunabc/article/det ...

  2. 转载:数位DP模板

    // pos = 当前处理的位置(一般从高位到低位) 2 // pre = 上一个位的数字(更高的那一位) 3 // status = 要达到的状态,如果为1则可以认为找到了答案,到时候用来返回, 4 ...

  3. VS2013使用技巧汇总

    1. Peek View 在不新建TAB的情况下快速查看.编辑一个函数的代码. 以前要看一个函数的实现,需要在使用的地方点击F12跳转到该函数,实际上这是很浪费时间的.VS2013Peek View便 ...

  4. xntp的配置

    ntpdate以一种非常粗暴的方式一次性完成设置时钟.由于实时时钟飘移,你需要周期性的矫正.基本上可以通过设置一个cron例行任务来运行ntpdate,但是你的机器从此就不能是ntp服务器了. 相反, ...

  5. UIWebView & javascript

    http://blog.163.com/m_note/blog/static/208197045201293015844274/ UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候, ...

  6. C语言开发工具

    1.编写程序的工具: indent命令将自动调整C代码的缩进风格,个人比较喜欢indent -kr 2.编译C语言程序: 1.gcc编译器: gcc是一个ANSI C兼容编译器,C++编译器也可以编译 ...

  7. CodeForces 701C They Are Everywhere(map的应用)

    这个题比较好的解决办法,我觉得还是map,map的size可以很快的知道我们选了几个字母,而且可以作为计数器,知道每一个字母出现了多少次, erase函数可以清除掉一个元素. 所以,定义两个指针L和R ...

  8. 转:Loadrunner——Simulate a new user on each iteration设置

    最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并通过一些实例也去实际操作了一遍,发现很多问题确实并不是那么难解决 ...

  9. php获取Linux网卡信息

    $data = exec("/sbin/ifconfig"); var_dump($data); 注意:有时候这种方式获取不到,应该是权限问题 在/var/rootP文件中添加ro ...

  10. 打开jsp页面自动加载多个Action的实现方法

    平时我们加载Action的时候都是提交表单,或者点击按钮以后才能发起Action请求. 现在我要实现一个功能:打开一个网站的首页从数据库中立刻读取多条不同表中的数据显示在页面上.这个时候要发起多个Ac ...