Cocos2dx学习笔记
Cocos2dx学习笔记
Lin&Yi
A thousand mile trip begins with one step.
展开
-
整理SimpleAudioEngine修改记录(IOS端)
Cocos2dx引擎版本:3.17.2路径:SimpleAudioEngin.mmstatic void static_setBackgroundMusicCurrentTime(float currentTime){ [[SimpleAudioEngine sharedEngine] setBackgroundMusicCurrentTime:currentTime];} static float static_getBackgroundMusicCurrentTime(){原创 2021-12-14 16:36:22 · 4061 阅读 · 0 评论 -
整理SimpleAudioEngine修改记录(Android端)
Cocos2dx引擎版本:3.17.2路径:..\cocos\audio\include\SimpleAudioEngine.h添加方法声明virtual void setMusicCurrentTime(int curMTime);//单位是毫秒virtual int getMusicCurrentTime();virtual int getMusicDuration();Android端路径:..\cocos\audio\android\cddSimpleAudioEngine..原创 2021-12-14 16:07:28 · 3626 阅读 · 0 评论 -
Cocos2d播放Cocostudio编辑动画
/** 播放cocostudio的动画 @param rootNode 当前播放动画的对象 @param csbFileName csb文件名 @param aniName 动画名 @param loop 是否循环播放(默认false) @par原创 2017-07-11 16:05:33 · 651 阅读 · 0 评论 -
utf8与unicode转换
int utf8_to_unicode(uint8_t *in, uint16_t **out, int *outsize){ uint8_t *p = in; uint16_t *result = NULL; int resultsize = 0; uint8_t *tmp = NULL; result = (uint16_t *)malloc原创 2017-08-03 16:11:40 · 379 阅读 · 0 评论 -
输入框自定义光标
#include"CursorTextField.h"CursorTextField::CursorTextField(){ m_textField = NULL; m_cursorSprite = NULL; m_cursorAction = NULL;}Node * CursorTextField::createWithTextField(TextField原创 2017-08-03 16:20:46 · 913 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(一)
前言: 众所周知,现在MVC非常流行。现在只要随便搜索一下,哪里都是MVC的影子。刚开始在j2ee里面,然后是rails,后面居然.net也出来了,ios更不用说,哪里都是mvc,而且强制你必须使用mvc。但是,我们写的那些程序,真正完全符合mvc吗?呵呵,这个不好说,看个人理解程度而异。mvc实在是太火了,那么cocos2d-x该怎么实现mvc呢? Model-View-C原创 2017-09-06 18:01:30 · 641 阅读 · 1 评论 -
Cocos2d-x里面如何实现MVC(二)
上一篇博文中,我提到了《如何在cocos2d-x里面实现mvc(一)》,但是,都是一些纯理论的东西,我们需要看一些代码才能理解地更清楚。这篇博文是基于上一篇来写的,所以我建议你先阅读完上一篇。模型类 就像之前所讨论的,GameModel类存储了游戏世界里面的一些属性,比如当前的重力。但是,它同时也负责创建和联接游戏里面的对象,比如Player和Platforms。它们之间的关系如下图原创 2017-09-06 18:13:59 · 368 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(三)
引子:前面两篇文章介绍了一些关于在cocos2d-x里面如何实现mvc的理论知识,接下来的这三篇教程,我将用一个简单的教程示例,给大家演示一下具体代码实现细节。 这篇文章的写作目的就是让大家更好地理解如何在cocos2d-x里面实践mvc模式(当然,这里演示的不一定是标准的mvc,因为cocos2d-x特殊的编程方式。但是,这并不妨碍我们编写更好的代码,你们说对吧?),本文是基于前两原创 2017-09-06 18:25:22 · 534 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(四)
在上一篇文章中,我们使用cocos2d-x基于mvc做了一个简单了游戏架子,这个架子还非常简单,还有许多东西有待实现。介绍模型 在上一篇博文中,我们介绍了view和controller。为了实现mvc模式,我们还需要添加一个model类来维护游戏的状态。我们的实现应该要包含下列这些类:1 GameBoardView - 也就是View,2 GameBoardC原创 2017-09-06 18:36:50 · 321 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(五)
本文基于前面两篇文章,如果您还没有看过,建议先阅读下面两篇文章:· cocos2d-x里面如何实现mvc(三)· cocos2d-x里面如何实现mvc(四)更新Model 当用户从工具箱中选一个小工具,然后把它放置到game board上面去时,我们需要编码响应这些事件。在上一篇文章中,我们已经实现了GameBoardViewDelegate的touchedA原创 2017-09-07 09:52:22 · 243 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(六)
本文将会比较简短。如果你对于前面几篇介绍cocos2d-x里面如何实现mvc有什么不清楚的地方,请跟我讲,这样我就可以补充地更详细一点。在此,我简单地总结一下前面写的这些文章:1 我们实现了Model,它可以帮助我们封装游戏的逻辑,这样可以使我们的关注点集中于游戏逻辑,而不是其它的(比如渲染)2 我们实现了Controller来处理用户交互,同时相应地更新model。3 我原创 2017-09-07 10:10:09 · 206 阅读 · 0 评论 -
Cocos2d-x里面如何实现MVC(完)
今天我们讨论的主题是Model-View-Controller (MVC)设计模式,以及如何在cocos2d-x里面实现它。来自波兰的Bartek Wilczyński写了一系列的文章来介绍这个模式,同时说明了为什么要使用mvc,以及如何在cocos2d里面使用mvc。 这个波兰人写的文章已经被我全部翻译过来了,请点击传送门查看。 当我在读他写的这些文章的时候,我记得J原创 2017-09-07 10:11:05 · 288 阅读 · 0 评论 -
cocos2d-x 缓动曲线
在实现运动中,我们常常需要实现一些加速度或者减速度的效果,cocos2d-x引擎为我们提供了相应的实现接口,这样我们就不用再用原来的公式计算方法来实现加减速度的效果Ease系列的方法改变了运动的速度,但是并没有改变总体时间,如果整个的action持续5秒钟,那么整个的时间仍然会持续5秒钟。这些action可以被分成3类:In actions: action开始的时候加速原创 2017-09-07 14:13:13 · 4392 阅读 · 0 评论 -
解决Call to unavailable function 'system': not available on iOS
官方论坛的链接地址Call to unavailable function ‘system’: not available on iOS官方已经帮忙给出了解决办法,这里,将官方的办法重新讲解一遍。 cocos/platform/CCFileUtils.cpp在#include 下面添加// android doesn't have ftw.h#if (CC_TARGET_PLAT原创 2017-09-21 16:25:08 · 2242 阅读 · 0 评论 -
cocos2dx获取系统当前时间
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) struct timeval now; struct tm* time; gettimeofday(&now, NULL); time = localtime(&...原创 2018-07-16 14:10:55 · 1285 阅读 · 4 评论 -
学习随笔
std::vector把configVec加到mConfigVec末尾mConfigVec.insert(mConfigVec.end(), configVec.begin(), configVec.end());原创 2018-12-07 14:03:38 · 140 阅读 · 0 评论 -
cocos2d-x 在ios端播放完mp4会崩溃的问题
在 cocos2d/cocos/ui/UIVideoPlayer-ios.mm 文件里,增加一个方法:- (void) deallocPlayer{ if (self.moviePlayer != nullptr) { [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlay...原创 2018-12-20 14:50:27 · 566 阅读 · 1 评论 -
cocos2d设置子节点不随父节点的透明度和可见性改变
Vector childrenVec = m_MaskBg->getChildren(); for (int i = 0; i < childrenVec.size(); i++) { childrenVec.at(i)->setCascadeColorEnabled(false); childrenVec.at(i)->setCascadeOpac原创 2016-11-24 16:57:19 · 5429 阅读 · 1 评论 -
COCOS2DX3.0的3种触摸响应机制
第一种是采用函数回调,主要是用于MenuItem[cpp] view plaincopy// a selector callback void menuCloseCallback(Object* pSender); auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.pn原创 2015-10-22 11:02:58 · 321 阅读 · 0 评论 -
程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede
最近我们的cocos2d-x游戏项目已经进入了正式开发的阶段了,几个dev都辛苦码代码。cocos2d-x还是一套比较方便的api的,什么action啊、director啊、ccpoint啊都蛮便捷的。但是我看到几个dev有时候会很不知道用它们,还是首先自己去写函数……用一些比较原始、低效率的方法……甚至是copy / paste………………。……。这不科学啊!你不能这么勤劳啊原创 2015-10-22 11:02:22 · 229 阅读 · 0 评论 -
cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序
这些方法调用的先后顺序如下(使用 replaceScene 方法):1. 第2个场景的 scene 方法2. 第2个场景的 init 方法3. 第2个场景的 onEnter 方法4. 转场5. 第1个场景的 onExit 方法6. 第2个场景的 onEnterTransitionDidFinish 方法7. 第1个场景的 deallo原创 2014-10-06 22:06:09 · 347 阅读 · 0 评论 -
cocos2dx3.0的触摸优先级和触摸屏蔽问题
用一个实战的例子吧先贴代码 auto listener1 = EventListenerTouchOneByOne::create();//创建一个触摸监听 listener1->setSwallowTouches(true);//设置不想向下传递触摸 true是不想 默认为false listener1->onTouchBegan原创 2014-10-08 22:00:58 · 337 阅读 · 0 评论 -
(转)cocos2d-x action整理集合
原文地址:http://blog.csdn.net/yanghuiliu/article/details/72617741.基本动作 Cocos2d提供的基本动作:瞬时动作、延时动作、运作速度。 瞬时动作:就是不需要时间,马上就完成的动作。瞬时动作的共同基类是 InstantAction。 Cocos2d提供以下瞬时动作: 放置 – Place转载 2014-10-08 22:03:59 · 361 阅读 · 0 评论 -
cocos2d截屏
Size visibleSize = Director::getInstance()->getVisibleSize(); Scene * curScene = Director::getInstance()->getRunningScene(); Point ancPos = curScene->getAnchorPoint(); //定义一原创 2015-01-23 17:52:09 · 400 阅读 · 0 评论 -
linux常用指令整理笔记(随时更新)
1、提交项目的时候,增加提交.a文件找到工程文件根目录//寻找所有的.a文件find . -type f -name "*.a"//调用外部指令添加到svn上find . -type f -name "*.a"|xargs svn add2、原创 2015-01-14 11:39:20 · 320 阅读 · 0 评论 -
设置手机屏幕常亮
IOS在IOS文件夹下的 AppController.mm 文件 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法内加上:[[UIApplicationsharedApplication] setIdleTim原创 2015-03-18 10:03:04 · 967 阅读 · 0 评论 -
解析版本号的字符串
在做项目时,总是会碰到各种诡异蛋疼的问题。例如,对比版本号。一般我们的版本号都是如:1.0.2 这样的字符串,那我想要知道当前的版本号和它对比,到底是哪一个更高一些,只能通过他们的数字来对比了。废话不多说,直接上solutionstd::vectorint>split( conststd::string str, std::string sep/*= "."*/ ){原创 2015-05-21 16:53:21 · 1030 阅读 · 0 评论 -
UIHelper的两个自动递归获取节点的函数(返回Node *)
//by tagNode* seekNodeByTag(Node* root, int tag){ if (!root) { return nullptr; } if (root->getTag() == tag) { return root; } const auto&原创 2015-05-18 13:00:42 · 374 阅读 · 0 评论 -
C++去除字符串中存在的空格
std::stringReplaceBlank(std::string inputStr){ string::iterator it = inputStr.begin(); while ((it=find(it, inputStr.end(),' '))!=inputStr.end()) { inputStr.erase(it);原创 2015-05-18 13:53:15 · 2251 阅读 · 0 评论 -
通过传入的两个点计算他们之间的角度
float getAngle(Point fromPoint, Point toPoint){ double len_y = toPoint.y - fromPoint.y; double len_x = toPoint.x - fromPoint.x; if( 0 == len_x && fromPoint.y <= toPoint.y ) {原创 2015-05-31 21:57:05 · 1501 阅读 · 0 评论 -
Vector用法小记
创建容器VectorSprite*> sp_vec; 将对象数据添加进容器中sp_vec.pushBack(sp); //和 堆栈 一样一样的获得容器中的大小int count = (int)sp_vec.size(); //这里不是一定要强转类型,各人习惯,因为看不惯X-Code总是报警告获得容器中的对象for( auto& e : sp_vec) {原创 2015-05-18 17:26:26 · 474 阅读 · 0 评论 -
回调参数绑定,将局部变量变成回调的传参
做项目的时候,总是会碰到在一些回调里处理逻辑,有的时候,需要一些参数来进行对应操作。如下,我创建一个精灵,让他执行一段移动的动作,在动作结束后,我想要将这个精灵释放掉Sprite * cardSp = Sprite::create("ui/icGotPoker.png");cardSp->setPosition(beginPos);cardSp->setRotation(angel原创 2015-05-31 21:43:36 · 401 阅读 · 0 评论 -
自定义回调 并将之以参数的形式传入
.h//按钮点击的回调类型定义typedef void (cocos2d::Ref::*BtnClickCallBack)();class ShowMsgLayer : public Layer{public: static Scene * scene(); virtual bool init(); virtual void onEnter()原创 2015-06-03 10:36:21 · 370 阅读 · 0 评论 -
计算中英文混合字符串的长度
std::string nickName;int strlen = nickName.length();__String * subNickName = __String::create(nickName); for (int i =0; i < strlen; ) { std::string substring = nickName.substr(i,1);原创 2015-06-24 16:13:11 · 661 阅读 · 0 评论 -
根据服务器检测本地版本号并自动更新资源
.h#ifndef __AutoUpdate__AutoUpdateLayer__#define __AutoUpdate__AutoUpdateLayer__#include "cocos2d.h"#include "curl.h"USING_NS_CC;using namespace std;#define BUFFER_SIZE 8192#define MA原创 2015-10-19 13:59:40 · 1064 阅读 · 0 评论 -
Cocos2d提供的字体!共57种(有对照的字体图)
很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利用一些时间整理了57种字体样式,这些我想足够你用了;不多说下面一起来看看吧:(每张图对应11种样式的字体,字体的名字就是其样式的名字) -----------------------------1----------------------------------原创 2015-10-20 15:02:22 · 1209 阅读 · 0 评论 -
多张图片合成一张图片(alpha混合)
代码: CCImage* body = new CCImage(); body->initWithImageFile("b.png", CCImage::kFmtPng); CCImage* cloth = new CCImage(); cloth->initWithImageFile("y.png",原创 2014-10-06 22:10:13 · 14127 阅读 · 0 评论