【唠叨】

    源码教程请移步:http://blog.csdn.net/iamlazybone/article/details/19612941

    感谢懒骨头提供了这么多的Demo教程,对于初学者的我而言,帮助真的十分大。

    注:本节仅仅记录博主自身学习《战神传说》的心得体会。


【游戏截图】

wKiom1QK0eqipZKkAAFxoHOj0cQ894.jpg




【学习心得】


1、CCSprite从大图里截取小图

//
	//CCRectMake构造为UI坐标,原点在左上角。
	CCSprite* sp = CCSprite::create("menu.png",CCRectMake(0,0,120,0));
//


2、全局变量extern

//
	//在.h中声明:
	extern CCArray* play_bullet;
	
	//在.cpp中定义:
	CCArray* play_bullet = NULL;
//


3、CCMenu布局

//
	//1.让menu的所有按钮竖着排列,并且设置间距为20.
	menu->alignItemsVerticallyWithPadding(20);

	//2.按菜单项顺序竖着排列,放置每行ci个元素
	menu->alignItemsInColumns(c1, c2, c3, ..., cn, NULL);
//


4、开关菜单项CCMenuItemToggle

//
	CCMenuItemFont* on = CCMenuItemFont::create("ON");
	CCMenuItemFont* off = CCMenuItemFont::create("OFF");
	CCMenuItemToggle* toggle = CCMenuItemToggle::createWithTarget(this,menu_selector(Options::setOptions),off,on,NULL);
	
	//设置开关选项,下标从0开始
	toggle->setSelectedIndex(1);
//


5、上下取整函数

//
	//小于等于x的最大整数
	double floor(double x);
	//大于x的最小整数
	double ceil(double x);
//


6、随机数0~1

//
	CCRANDOM_0_1();
//


7、动作分解

    当一个动画由多个动作组成时,可以对动画进行动作分解。

    如分解成:移动、放大、旋转等,单独处理,然后在整合成一个复杂的动作。


8、流程分解

    (1)checkIsCollide();     //碰撞检测(只扣血)

    (2)removeInactiveUnit(); //移除不活跃的元素(销毁死掉的战机或***)

    (3)checkIsReborn();      //战机重生,或游戏结束(重新复活)

    (4)updateUI();           //刷新界面


9、混合模式

    详细讲解请移步:http://shahdza.blog.51cto.com/2410787/1547633


10、飞机触摸移动

//
	void Game::ccTouchMoved(CCTouch* touch, CCEvent* event) {
		if( ship!=NULL ) {
			CCPoint pos = touch->getDelta();                        //获得触屏滑动的偏移量
			CCPoint currentPos = ship->getPosition();               //获得飞机目前坐标
			currentPos = ccpAdd(currentPos, pos);                   //飞机+偏移量 后的坐标
			currentPos = ccpClamp(currentPos, CCPointZero, mysize); //不能移除屏幕
			ship->setPosition(currentPos);                          //设置飞机移动后的坐标
		}
	}
//