coco2dx开发的小总结篇章 不断更新

1:didAccelerate(CCAcceleration *pAccelerationValue) 得到重力改变的函数 就是你想做一个摇晃类游戏得到z的变换就是这个接口。setIsAccelerometerEnabled(true);

2:voidvisit()

{

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    CCSize winSizeInPixels = CCDirector::sharedDirector()->getWinSizeInPixels();

    float scaleX = winSizeInPixels.width / ORIGIN_WIDTH;

    float scaleY = winSizeInPixels.height / ORIGIN_HEIGHT;

    

    glEnable(GL_SCISSOR_TEST);

    glScissor(0 , 100, winSize.width,300);

    

    CCLayer::visit();

    

    glDisable(GL_SCISSOR_TEST);

    

} //这个就是j2me里面的setclip啦。设置当前层的c裁剪区域。

3:随机数  arc4random(); 或者 srand((unsigned)time(NULL));//必须要 不然种子不会变得到的随机数永远都是一样的 rand()%100;

4:删除文件 c语言自带:int r = remove(“path”); //删除文件

5:文件以及数据库操作需要做线程安全处理;

6:图层layer出错 可以使用函数设置成2d模式再试试:CCDirector::sharedDirector()->setProjection(CCDirectorProjection2D);

7: 二进制png生成sprite:

CCImage image;

        unsigned long nSize  = pngLength;

        unsigned char* pBuffer = pngDatas;

        image.initWithImageData((void*)pBuffer, nSize, CCImage::kFmtPng);        CCTexture2D* texture = new CCTexture2D();

        texture->initWithImage(&image);        

        if (!texture)

        {

            return false;

        }        

        CCSprite* sprite = CCSprite::spriteWithTexture(texture);

        texture->release();

8:c语言下判断文件时候存在

用函数access,头文件是stdio.h,原型: 
   
int   access(const   char   *filename,   int   amode); 

amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 

这个函数还可以检查其它文件属性: 

06     检查读写权限 
04     检查读权限 
02     检查写权限 
01     检查执行权限 
00     检查文件的存在性
在UNIX和VC下实验成功。
好处是 fopen(..,"r")不好,当无读权限时一不行了。
而这个就算这个文件没有读权限,也可以判断这个文件存在于否
存在返回0,不存在返回-1
#include <stdio.h>
int main()
{       
printf ("%d",access("111",0));
}

9:char c[10]; sprintf(c,"123456789012");

printf("%s",c);

居然能全部打印出来,这个隐形错误让我郁闷了2个小时,哎呀呀呀。bt

10:闪屏问题 看中文网站http://cn.cocos2d-x.org/resource/show?nid=80 第二个方法

11:日期相关 得到日期 并计算相差的天数 以日为单位

structcc_timeval now;

if( CCTime::gettimeofdayCocos2d(&now,NULL) == 0)

    {

        structtm *t;

        t = localtime(&now.tv_sec);

        int nowYear = t->tm_year+1900 ,nowMonth = t->tm_mon+1,nowDay = t->tm_mday;

        char time[100];

        sprintf(time,"%d-%d-%d",nowYear,nowMonth,nowDay);

        

        if (time.length() > 0)

        {

            char* token = strtok((char*)timeStr.c_str(),"-");

            int lastYear,lastMonth,lastDay;            

            int j = 0;

            while( token != NULL )                

            {                

                if (j == 0)

                {

                    lastYear = atoi(token);

                }

                elseif (j == 1)

                {

                    lastMonth = atoi(token);

                }

                elseif ( j == 2)

                {

                    lastDay = atoi(token);

                }

                j++;                

                token = strtok( NULL,"-");                 

            }

            CCLog("lastYear:%d lastMonth:%d lastDay:%d",lastYear,lastMonth,lastDay);

            int disDays = getDays(nowYear, nowMonth, nowDay, lastYear, lastMonth, lastDay);

            CCLog("disDay:%d",disDays);          

        } 

int getDays(int year,int month,int day,int lastYear,int lastMonth,int lastDay)

{

    int  iTotalDays = 0;

    int  iMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // Initiate month

    if (isLeapYear(lastYear))

    {

        iMonth[2] = 29;

    }

    else

    {

        iMonth[2] = 28;

    }

    

    while (!(year == lastYear && month == lastMonth && day == lastDay)) {

        lastDay++;

        if ( lastDay == iMonth[lastMonth]) {

            lastDay = 0;

            lastMonth++;

        }

        if (lastMonth == 13) {

            lastMonth = 1;

            lastYear ++;

            if (isLeapYear(lastYear)) 

            {

                iMonth[2] = 29;   // Leap year February is 29 days.

            }

            else

            {

                iMonth[2] = 28;

            }

        }

        iTotalDays++;

    }

    return iTotalDays;

    

}

bool isLeapYear(int year)

{

    bool isLeapYear = false;

    if ((year%4==0 && year%100) || year%400 ==0 )

    {

        isLeapYear =  true;

    }

   

    return isLeapYear;

}

 12:uiview 旋转这只位置

//            CGAffineTransform transform = adView.transform; //旋转

//            transform = CGAffineTransformRotate(transform, 3.14F/2);

//            adView.transform = transform;            

            

//            adView.center = CGPointMake(200, 500); //中心点设置坐标

            // 设置位置

            CGRect frame = adView.frame;

13:c/c++ 随机数使用前只需要初始化一次随机数种子 srand((unsigned)time(NULL)); //初始化随机数种子

不然多次初始化太消费cpu了。

            frame.origin.x = 0;

            frame.origin.y = 0;

            adView.frame = frame;

13:os下的定时器

 

    //    [NSTimer scheduledTimerWithTimeInterval: 90

    //                                     target: self

    //                                   selector: @selector(handleTimer)

    //                                   userInfo: nil

    //                                    repeats: NO];

posted @ 2012-04-20 14:04  江海不系舟  阅读(1169)  评论(0编辑  收藏  举报