cocos2d-x 3.6 mac下的试用(粒子,触摸事件,图片)

戏说

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

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

时间: 2024-10-05 05:56:39

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

mac下空格预览.webp格式图片

WebP-2.2.qlgenerator 下载: https://github.com/dchest/webp-quicklook/releases/download/v2.2/WebP-2.2.qlgenerator.zip 安装: sudo cp WebP-2.2.qlgenerator.zip /Library/QuickLook/ sudo unzip /Library/QuickLook/WebP-2.2.qlgenerator.zip sudo rm -rf /Library/Qui

在mac下idea的常用快捷键如下,下面的快捷键都亲自试用,并有一些和eclipse对比的说明 alt+f7查找在哪里使用 相当于eclipse的ctrl+shift+G command+alt+f7 这个是查找选中的字符在工程中出现的地方,可以不是方法变量类等,这个和上面的有区别的 command+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择 ,功能基本同上 选中文本,按com

在mac下idea的常用快捷键如下,下面的快捷键都亲自试用,并有一些和eclipse对比的说明 alt+f7查找在哪里使用 相当于eclipse的ctrl+shift+G command+alt+f7 这个是查找选中的字符在工程中出现的地方,可以不是方法变量类等,这个和上面的有区别的 command+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择 ,功能基本同上 选中文本,按command+shift+F7 ,高亮显示所有该文本,按Esc高亮消失.选中文本,按Alt+F3 ,逐个往下

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

linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问题始终没有能解决——ssh链接偶尔会断掉.关于这个问题,先说下leby的工作环境吧:我们是不能直接ssh目标主机的,必须用ssh代理中转,于是搭建了一个HTTP的proxy,这之前在windows下xshell工作很好.在mac的scrt下,总是会随机掉线,一些超时配置当然是试过的,不能解决问题.

Mac下SublimeText 3配置C语言编译环境

1. SublimeText简述 Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim.一款文本编译器怎么才能满足大部分程序员的需求呢? 首先,它得是跨平台的,linux,win,mac都可以用,每个平台上的软件都很好用也很关键: 其次功能强大(插件丰富),占用内存小,界面友好,比如编辑状态退出会自动保存,下次打开方便编译: 还有就是方便提交ftp, svn, git,查看本地文件历史纪录: 以上三个优点SublimeT

Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;

    首先要说,最近真的是太忙了,好久没写博客了,今天正好有空,就写一下最近在写游戏中的一些发现: 话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是可以进行增量更新和即时编译等,节省了很多时间:好了废话不多说了,进入正题: 这里我是以Cocos2d-x-2.2.2 为例<其实,写着文章时候Cocos2d-x-3.2 都封版了>: 今天我就说一下怎么用Cocos2d-x3.2中的cocos-console 去 批量 加密lua脚本-变成luac文件 ,js文件变成jsc加密文

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

Mac下Appium环境搭建: 消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为TestYao刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速把移动端自动化这块搞起来,试用几款目前流行的工具,腾讯的xtest定制版.神州数码的自动化测试平台.开源rf+appium框架. 经过一段试用最终还是选择了rf+appium主要原因有: 1.开源,网上社区活跃 2.扩展性强,针对不同项目不同的需求,封装

Mac下cocos2dx-3.0打包Android时,提示&amp;quot;SimpleAudioEngine.h&amp;quot;not found的解决方法

前段时间触控公布cocos2dx-3.0,在升级之后试过之后,在最初的不习惯之后,感觉比之前的好用了不少,在下之前一直是用xCode模板创建,这回算是一口气升到顶了. 之后再一次编程时须要用到SimapleAudioEngine,而之后调试的时候在iPhone上全然没问题,可是在Android真机上调试时,却提示"SimpleAudioEngine.h" not found,在网上查了下,应该是库没有导入,可是因为我对eclipse了解不多,并且import入的时候也有莫名其妙的错误,

mac下的抓包工具Charles

在mac下面,居然没有好的抓包工具,这让我十分纠结,毕竟不可能为了抓一个http包就跑到win下折腾.或许有人说tcpdump这么好的工具,你怎么不用.说实话,tcpdump太复杂了,我还没有细看,再加上不是所见所得,所以,用起来不是那么习惯 又有人说,wireshark怎么不用?好吧,其实我是有装wireshark,只是启动的时候会启动XQuartz,有点慢,当然这不是主要的,而是wireshark功能太强大了,以至于都不会写过滤器. 也有人说,图方便的话,完全可以用chrome自带的抓包工具

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

对手机的抓包有两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式 第一种 Fiddler: 利用 Fiddler 抓包,适合大多数走代理的应用, 优点 (1) 无需 root (2) 对 Android 和 Iphone 同样适用 (3) 操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4) 数据包的查看更清晰易懂,Fiddler 的 UI 更简单明了 . 参考: http://www.trinea.cn/android/android-network-