1、所有的源文件统一新建到Classes里,否则无法找到源文件,这样也便于跨平台编译
 
2、绘图坐标系,与opengl采用相同坐标系,左下角为原点
纹理坐标系,以左上角为原点
 
3、最近有在学习COCOS2D,看到书中有使用SCENE_FUNC_CREATE这个宏
经查找,发现SCENE_NODE_FUNC这个宏在这个版本中并不存在(至少我没有找到)
抱着试一试的想法,直接换成CREATE_FUNC这个宏,发现程序可以正常运行。
如果有遇到这个问题的朋友,可以尝试将SCENE_NODE_FUNC 替换成CREATE_FUNC。
 
4、今天在项目中,又看了一下MoveTo和MoveBy,我以前理解错了一些!CCMoveBy::actionWithDuration(2, CCPointMake(80,80));这里的ccp(80,80)不是像ActionTo中的一样(屏幕上的目标坐标点);这里是偏移量(80,80) ? 这里不是点吗? 对,它对于CCMoveBy是相对于CCNode原先的坐标点横坐标向右偏移80个像素,纵坐标也偏移80个像素。
 
5、windows phone不支持MP3
 
6、真正的随机数??
关于随机数 cocos2d-x 定义了一个宏 CCRANDOM_0_1 生成的是 [0, 1] 之间的值
因此,要生成  [0-100] 之间的数    CCRANDOM_0_1 * 100
生成 [1,5]  之间的float 数,  就是 CCRANDOM_0_1 * 4 + 1
但是这个随机并不是真正的随机,你多试几次就会发现,每次都是固定的顺序产生,对于随机数我们一般都需要指定一个种子,让它依据这个种子产生。
这里采用当前时间生成随机种子:
srand(GetTickCount()+ rand()); 可惜的是GetTickCount()属于win,打包apk的时候会报错,经测试,简单点的方法是 srand(int(time(0))+ rand());
    cc_timeval psv; 
    CCTime::gettimeofdayCocos2d(&psv, NULL); 
    unsigned long int rand_seed = psv.tv_sec*1000 + psv.tv_usec/1000; 
    srand(rand_seed);
 
7、乱序数组内容
#include <vector>
#include <algorithm>
std::vector<int> randVector;
for(int i=1;i<=10;i++)
    {
        randVector.push_back(i);
    }
    std::random_shuffle(randVector.begin(),randVector.end());
 
8、检测触摸点是否在精灵内部
        if(sp->getBoundingBox().containsPoint(sp->convertTouchToNodeSpace(touch)))
        {
            touchNode = sp;
            break;
        }
 
9、
1. 当使用create的时候,都是被加入了autorelease的,所以如果需要使用的话,要记得retain一下啊,addchild自动retain了;
2. 如果使用的是new,那么就要记得不用的时候一定要release啊;
3. 一般来说cocos2dx的CCNode都是有create的,比如CCArray不用担心释放问题;
4. vector这些c++函数不要忘记释放内存啊;
5. 最好是不要混用,如果你对他们很清楚,ok,可以的;
6. 为了格式统一,我一般喜欢自己创建create函数。
 
10、避免手打输入项目cpp文件到android.mk里面编译
FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) 
 
11、CClayer的锚点在0,0,而精灵的默认锚点为中点(0.5,0.5)
 
12、对象层添加触摸
this->setTouchEnabled(true);
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
在头文件添加函数
    bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
    void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
    void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
 
13、NDK调试
 
14、触摸屏蔽
在窗口弹出的情况下,要屏蔽底层的触摸,调用该层的setTouchEnable即可,注意,init在OnEnter之前调用,runing在OnEnter中这是true,所以在init函数中设置是否触摸没用。
 
15、Button添加点击监听的函数
void StartSence::startGame1(CCObject *sender,TouchEventType eventType)
{
    if (eventType == TOUCH_EVENT_BEGAN)
    {
 
    }
    if (eventType == TOUCH_EVENT_MOVED)
    {
        
    }
    if (eventType == TOUCH_EVENT_ENDED)
    {
 
    }
    if(eventType==TOUCH_EVENT_CANCELED)
    {
 
    }
}
 
16、
场景: cocos2dx 跨平台开发, 移植Android版本时, 当进行到build_native.sh步骤后
 
ndk版本: android-ndk-r9
 
开发环境: mac os 64bit, Android+Eclipse
 
BUG:
 
  CCCommon.cpp:54:77: error: format not a string literal and no format arguments [-Werror=format-security]
 
原因:
 
  android-ndk-r9与Eclipse的版本不兼容问题
 
方案之一(我搜到的):
 
  在对应项目的proj.android/jni/Application.mk添加一句话
 
  APP_CFLAGS += -Wno-error=format-security
 
  意思就是无视这个error
 
可以解决编译出错问题, 如有更好方案, 请不吝赐教.
 
17、开启重力感应
this->setKeypadEnabled(true);
GameUILayer::didAccelerate(CCAcceleration* pAccelerationValue)
 
18、异步加载plist
CCTextureCache::sharedTextureCache()->addImageAsync("ui_text.png",this,callfuncO_selector(CTestLayer::showSprite));
 
CCTexture2D* texture_ui_text=(CCTexture2D*)obj;//传入的obj即是异步生成的纹理
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("ui_text.plist",texture_ui_text);//通过纹理和.plist文件加入CCSpriteFrameCache
    CCSprite* raffle_b_friend=CCSprite::createWithSpriteFrameName("raffle_b_friend.png");//尽情使用小图片吧
 
19、动作序列的延迟,回调
CCSequence::create( CCDelayTime::create(0.3f),CCHide::create(),NULL)
(1).无发送者无数据回调:CCCallFunc,示例如下
(2).有发送者无数据回调:CCCallFuncN  (N是CCNode),示例如下
(3).有发送者有数据回调:CCCallFuncND  (N是CCNode,D是data,是void *类型)
 
20、error LNK2001: 无法解析的外部符号
最佳答案首先可以肯定地告诉你,出现这种错误,原因不在于编程平台或者编译器的某些文件,是你自己程序有问题。请检查一下自己的程序。上面提到的那几个函数,可能在你的class KSwordOnLineSever类里面定义了,但它的实现部分还没有写,看看是不是忘了?看看你是不是犯了如下所示的错误:class a{int x;public:void set(int p);};/*漏掉函数的实现部分:void a::set (int p){x = p;}*/这种错误不会在编译时被显示,因为它符合语法规则,但无法build!

Cocos2d-x 开发手记的更多相关文章

  1. [分享]源代码&开发手记:SAE应用“车百科” (Python + SAE + Bottle + Bootstrap) - Bottle - Python4cn(news, jobs)

    [分享]源代码&开发手记:SAE应用"车百科" (Python + SAE + Bottle + Bootstrap) - Bottle - Python4cn(news, ...

  2. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

  3. HoloLens开发手记 - HoloLens真机上手简评

    千呼万唤始出来,终于今天拿到了HoloLens真机. 使用体验 使用自带的应用录制了一段使用视频,如下 设备概览 包装盒 本体 试戴 实际效果 GalaxyExplorer试玩 全息图像贴到现实场景表 ...

  4. [转]Unity3D新手引导开发手记

    直接跳转吧  Unity3D新手引导开发手记 看到还不错就直接转过来了,我是有多懒啊

  5. [转]Nodejs开发框架Express4.x开发手记

    Express: ?web application framework for?Node.js? Express 是一个简洁.灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮 ...

  6. Doris开发手记4:倍速性能提升,向量化导入的性能调优实践

    最近居家中,对自己之前做的一些工作进行总结.正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果.借用本篇手记 ...

  7. 大型B2B网站开发手记 1

    本手记记录所有该B2B网站开发中遇到的问题和解决方法,一方面给大家一些思路,一方面提升自己,记录整个过程 1. 测试环境部署问题 部署环境是server2012 R2,部署上去发现WCF报错如下 sv ...

  8. APP开发手记01(app与web的困惑)

    文章链接:http://quke.org/post/app-dev-fragment.html (转载时请注明本文出处及文章链接) 最近在用博客园的wcf服务做博客园的android和ios的app, ...

  9. Doris开发手记2:用SIMD指令优化存储层的热点代码

    最近一直在进行Doris的向量化计算引擎的开发工作,在进行CPU热点排查时,发现了存储层上出现的CPU热点问题.于是尝试通过SIMD的指令优化了这部分的CPU热点代码,取得了较好的性能优化效果.借用本 ...

随机推荐

  1. Beginners Guide To Learn Dimension Reduction Techniques

    Beginners Guide To Learn Dimension Reduction Techniques Introduction Brevity is the soul of wit This ...

  2. date format 精辟讲解

    link: http://stackoverflow.com/questions/19533933/nsdateformatter-how-to-convert-wed-23-oct-2013-045 ...

  3. Coder-Strike 2014 - Finals (online edition, Div. 2) C题

    C. Online Meeting time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  4. HTTP报头详解

    HTTP头字段包括4类:      general-header ; 通用报头      request-header ; 请求报头      response-header ; 响应报头      ...

  5. Goolg Chrome 插件开发--Hello world

    开发Chrome插件很简单,只要会web开发(html+javascript+css)那么这个就是能驾轻就熟,只需要了解一下插件具体的运行环境及要求就OK了. 1.先创建一个html文件,名字随便取, ...

  6. VSync Count 垂直同步

    原地址:http://blog.csdn.net/yesy10/article/details/7794556 Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一 ...

  7. POJ3525 Most Distant Point from the Sea(半平面交)

    给你一个凸多边形,问在里面距离凸边形最远的点. 方法就是二分这个距离,然后将对应的半平面沿着法向平移这个距离,然后判断是否交集为空,为空说明这个距离太大了,否则太小了,二分即可. #pragma wa ...

  8. iOS-CALayer实现简单进度条

    /** *  用CALayer定制下载进度条控件 *  1.单独创建出CALayer *  2.直接修改CALayer的frame值,执行隐式动画,实现进度条效果 *  3.用定时器(NSTimer) ...

  9. DevExpress GridControl 复合表头/表头分层设计.

    首先创建一个窗体,将GridControl控件拖到窗体中. 然后 Click here to change view  -> Convert to ->  BandedGridView   ...

  10. NtpClient

    http://www.baidu.com/link?url=IWGCXsX4Mns_ZjEF6HYEK156xCsndi9Bu1w3x_YiaJfdsr8vf0Q5worm43W3OiEmSHpzTp ...