戏说

虽然公司再如何如何,咱程序员在干好课外学习的情况下也是要努力做好本职工作的。

工作中的lua也写多了,深入了解Cocos2d-x当然还是要倒腾倒腾C++,对于一个C#用了这么多年,工作用lua的小菜来说,C++还真是不习惯。

Cocos2d-x不知不觉的更新到了3.6版本,真是万人大吐槽,2d还没做清楚又开始弄3d了,触控大神们就不能专心做好一件事情吗,多少大坑没填好,又是各种改命名,每次更新都向学习新库一样。。。Orz。。。。吐槽完毕还是要好好工作的。

演义

3.6中引入了Frame架构概念(不要说没有学习Unity,商店真是赤果果的抄袭- -),要先下好Cocos,再从商店下载各种东西,不过说实话对于超级懒的博主来说还是挺方便的,在Mac几乎是一路鼠标右键完成,再也不用东奔西跑找资源了。安装好后它是长这样滴。。

试用了下CodeIDE,不是太习惯,还是用Xcode比较习惯,对于eclipse系的编辑器长期无爱呀。但是考虑到多平台开发的情况的,推荐大家还是试用CodeIDE,这方面还是不错的(坐等微软编辑器,哈哈哈)。

废话不多说,切入代码部分。

神话

1.文件创建

在Cocos中新建项目比当年的命令行人性化了不少,建立之后就可以在CocosStudio中打开项目。

然后在CocosStuido中发布到Xcode的就可以了。

很方便有木有!!大家快来一起做游戏吧~

发布完毕后会直接打开Xcode,Resources/res是cocos2d-x默认存放资源的文件夹,Classes中存放了代码,发布后可以直接运行,AppDelegate.cpp中的内容我就不老生常谈啦!!不懂的朋友请百度,或者点推荐我!我一对一辅导!!嘿嘿。

2.Scene的使用

Cocos2d中的Director,Scene,各个Layer的关系,一张图+一句话弄明白:全场只有一个导演,他可以更换Scene,剩下的Layer全归Scene了。(是不是更不明白了- =)

换Scene就是导演一句话的事情。

auto scene = Player::createScene();
Director::getInstance()->replaceScene(scene);

3.ImageView和Touch不得不说的事情

下面的代码创建了一个小鸡的图片(不要问我图片哪里来的。。。百分百原创有木有。。。),点击小鸡,小鸡就开始奔跑了,额,勉强理解为奔跑。。。

Touch事件采用了_eventDispatcher进行管理,这货貌似是3.0后冒出来的,lua中反正我都是用addTouchListener的飘过。

OnTouchBegin可用用CC_CALLBACK的方式设置回调,也可以用简单的也可以直接labmda匿名函数直接处理。

#include "Player.h"

Scene* Player::createScene()
{
auto scene = Scene::create(); auto layer = Player::create(); scene->addChild(layer); return scene;
} bool Player::init()
{
if ( !Layer::init() )
{
return false;
}
//获得当前屏幕尺寸
Size visibleSize = Director::getInstance()->getVisibleSize();
//获得可视屏幕原点坐标
Vec2 origin = Director::getInstance()->getVisibleOrigin(); //创建背景图层
background = ImageView::create();
background->loadTexture("background.png");
background->setPosition(Vect(origin.x+visibleSize.width/2,origin.y+visibleSize.height/2));
this->addChild(background); //创建小鸡
ImageView* chicken = ImageView::create();
background->addChild(chicken);
chicken->setPosition(Vec2(500,500));
chicken->setName("Chicken");
ChickenRun(); //创建监听
auto myListener = EventListenerTouchOneByOne::create();
myListener ->setSwallowTouches(true);
myListener->onTouchBegan = CC_CALLBACK_2(Player::onTouchBegan,this); //绑定监听
_eventDispatcher->addEventListenerWithSceneGraphPriority(myListener, chicken); return true;
} //小鸡快跑
void Player::ChickenRun()
{
ImageView* chicken = static_cast<ImageView*>(background->getChildByName("Chicken"));
if (chickenState == 1) {
chicken->loadTexture("left.png");
}
else
{
chicken->loadTexture("right.png");
}
} //触摸开始事件
bool Player::onTouchBegan(Touch* touch, Event* event)
{
event->getCurrentTarget();
auto target = static_cast<Sprite*>(event->getCurrentTarget()); //获取当前触控点相对与按钮的位置
Point locationInNode = target->convertToNodeSpace(touch->getLocation());
Size s = target->getContentSize();
Rect rect = Rect(0, 0, s.width, s.height); //检测点击区域
if (rect.containsPoint(locationInNode))
{
chickenState = chickenState * (-1);
ChickenRun();
return true;
}
return false;
}

4.关于粒子不得不说的那些事

很多游戏中使用到了粒子系统,cocos2d有自带的一些粒子,但是效果比较单一,淡出用代码写粒子很难看出效果,在mac下有ParticleDesigner,可以可视化编写粒子,然后导出Plist文件,Cocos2d可以直接在代码中进行调用。

使用下面代码将粒子导入Cocos2d,轻松快捷:

//创建粒子
void Player::CreateFire()
{
ParticleSystemQuad *particle = ParticleSystemQuad::create("Particle/Fire.plist");
background->addChild(particle);
particle->setPosition(Vec2(600,500));
particle->setTag(11);
}

5.效果展示

源文件有点大就提供下载了,东西也比较简单,也是漏洞百出啊,发现错误一定要告诉我啊,又是大半夜的,为了多活几年,还是早点睡觉吧。

博客地址: http://www.cnblogs.com/nightcat/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如文中有不妥或者错误的地方还望高手的指出,以免误人子弟。如果觉得本文对您有所帮助请【推荐】一下!如果你有更好的建议,不妨留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。

cocos2d-x 3.6 mac下的试用(粒子,触摸事件,图片)的更多相关文章

  1. Beyond Compare在Mac下永久试用

    转自 作者:忆如初 链接:https://www.jianshu.com/p/596b4463eacd 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. 亲测可用 一. ...

  2. 关于Mac下的SSH客户端iterm2等配置

    linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问 ...

  3. Sencha Touch 2 在MAC下详细的开发流程

    在不久的将来我相信Web App会流行的非常广, 能看到未来才能主宰未来.对于我们开发人员来说我觉得想成就一件伟大的事情,需要过硬的技术和好的想法,再加上决不放弃的精神,一定可以成功的. 以下在Mac ...

  4. RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

    消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...

  5. Mac下GTest的基本使用

    Mac下GTest的基本使用 gtest全称Google C++ Testing Framework,它是从谷歌内部诞生并受到业界追捧的一个非常优秀的测试框架,支持如自动发现测试.自定义断言.死亡测试 ...

  6. 使用mac下Fiddler的替代工具Charles进行手机抓包

    对手机的抓包有两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式 第一种 Fiddler: 利用 Fiddler 抓包,适合大多数走代理的应用, 优点 (1) 无需 ro ...

  7. Mac下git的环境搭建和基本使用

    前言本文将介绍git的基本概念.环境搭建.日常使用,主要针对刚接触git,或接触不久,或好久没用忘记的同学们,当然是基于mac环境的,window系统也是大同小异!本文将从以下几个模块介绍,希望能帮助 ...

  8. Mac下面的SecureCRT(附破解方案) 更新到最新的7.2的破解方案

    继续更新到7.2的破解.只是升级了下secureCRT到7.2,方法还是不变 相信很多人升级到了7.2的SecureCRT之后原来的破解方案失效了,一直也有人问新的破解方案,发现了,不敢独享放上crt ...

  9. [转]Mac下cocos2dx-3.2+Xcode环境配置和项目创建

    原文:http://blog.csdn.net/u012200908/article/details/38070885 这是有关环境配置的第二篇教程,第一篇讲的是win8下的环境配置.这里我们使用C+ ...

随机推荐

  1. 由IP和掩码计算广播地址

    public static IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask) { var ip = ipAddress ...

  2. PL/SQL之--触发器

    一.简介 触发器在数据库里以独立的对象进行存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来触发运行.oracle事件指的是对数据库的表或视图进行的inse ...

  3. JFrame小练习1

    1.文本域组件 public class TestJTextArea { public static void main(String[] args) { JFrame jf=new JFrame(& ...

  4. 复制文件的bat脚本

    数据库备份到不同的机器上的一段脚本 使用系统的copy 命令来复制单个文件 如果要复制某个文件夹,则使用xcopy 命令 set date=%Date:~0,4%%Date:~5,2%%Date:~8 ...

  5. poj 2942 Knights of the Round Table 圆桌骑士(双连通分量模板题)

    Knights of the Round Table Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 9169   Accep ...

  6. Armstrong数

    题目描述 在三位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称之为Armstrong数.将所有的Armstrong数按小到大排序,试写出一程序找出指定序号的三位Ar ...

  7. 合工大OJ 1330 种树

    Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2, ...

  8. CSU 1081 集训队分组

    题意:有n个学生,比了一场比赛,但是榜单看不到了.现在告诉你m段信息,每段信息的内容是(a,b),表示a的排名比b的高.问你能不能根据这些信息得出这场比赛的前k名. 思路:用拓扑排序找出一组符合k个人 ...

  9. NGUI 3.x 练习

    一.常用快捷键 Alt+Shitf+W 创建一个新的 Widget Alt+Shift+S 创建一个新的 Sprite Alt+Shift+L 创建一个新的 Label Alt+Shift+T 创建一 ...

  10. mongoVUE1.5.3 破解方法

    MongoVUE是个免费软件,但超过15天后功能受限.可以通过删除以下注册表项来解除限制: [HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-82 ...