文章目录
屏幕适配:(在AppDelegate.cpp)

 CCEGLView pEGLView =CCEGLView::sharedOpenGLView();

pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder);







kResolutionExactFit:会靠拉伸来填满屏幕,本例来说背景图会变形来填充屏幕,因为1024:768=1.3, 480:320=1.5,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。

kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。

kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个










全局变量(可以通过这个来方便新建)

  CC_SYNTHESIZE(int,level,Level);这个宏会创建getLevel()和setLevel(int)两个方法。

 CC_SYNTHESIZE_RETAIN();也很容易理解,是具有retain属性的变量。





加入的cpp文件都需要在android.mk里添加







资源配置等最好写在一个Resource.h里,cpp文件可以引入。h直接使用,方便以后修改




//判断碰撞

bool Army::collisionWithCircle(CCPoint circlePoint, float radius, CCPoint circlePointTwo, float radiusTwo)

{

    float xdif = circlePoint.x - circlePointTwo.x;

    float ydif = circlePoint.y - circlePointTwo.y;

    float distance = sqrt(xdif xdif + ydif ydif);

    if(distance <= radius + radiusTwo)

    {

        return true;

    }

    return false;

}

定时器schedule



调用update方法,需要在类生成时候加入scheduleUpdate(),对应终止方法为unscheduleUpdate();


定时执行

this->schedule(schedule_selector(Garden::myCallBack),1.0f);   //1秒执行

延时执行

在myCallBack中加入unschedule(schedule_selector(Garden::myCallBack));则可以做成延时执行

如果是action延时执行,则可以通过CCSequence::create(CCDelayTime::create(3.0f),XXX,NULL);




回调函数CCCallFunc



CCCallFunc   不带参数回调void

CCCallFuncN   带调用的对象自己去函数

CCCallFuncDN    带参数调用







my->runAction(CCCallFunc::create(thiscallfunc_selector(AirPort::damageTarget)));
    //this为airport对象


my->runAction(CCCallFuncN::create(this, callfuncN_selector(AirPort::damageTarget)));   //传进去的my对象



void AirPort::damageTarget(CCSprite arrow){}

my->runAction(CCCallFuncND::create(this, callfuncND_selector(AirPort::damageTarget), (void*)mInt))





跑酷:

1、schedule:在游戏中,要检测两个运动的物体什么时候否碰撞,就必须在每一帧中对两个物体的矩阵范围进行判断,是否出现相交。同样的,一些游戏动画,为了做出动画效果,我们在设置动作的同时,还需要对每一帧的画面进行布局,在cocos2d-x中就可以使用schedule()函数实现了。

跑酷中,时刻监控玩家触摸屏幕,需要执行角色jump的方法,包括位置和触摸屏幕的时间等等,相当于void update(float dt);函数,每一帧进行刷新,实时监控。

第一个参数schedule_selector,刷新时所要调用的方法,第二个参数为间隔的时间。


2、进行自定义宏  如:

#define INIT_BASIC_VIEW if(!BasicView::init())

{

return false;
}


3、setScale:进行缩放,参数为负数的时候将掉转方向。

4、scheduleUpdate,同样可以进行更新,以帧为单位,同时写update方法。

5、锚点设置0~1,如果是精灵,默认为(0.5,0.5),即精灵的正中心;如果是layer,则默认为左下角(0,0)。

5、做为一个游戏,获取结点操作相当频繁,如果一直使用getchildbytag来取得,有时会使得游戏变得很卡,浪费了很多的cpu时间。从那以后的开发尽量少用或不用这个函数,改为成员变量比较好,减少了父结点遍历子结点的时间。从而提高程序的效率。




文章目录