CCDirector的主要作用:

1.访问和改变场景;

2.访问cocos2d-x的配置细节


3.访问视图(OPENGL,UIVIEW,UIWINDOW);


4.暂停,恢复和结束游戏;


5.在UIKit和OpenGL之间切换坐标

CCNode 常用API:

1.生成一个新的节点:


CCNode*childNoe = CCNode::create();


2.将新节点添加为子节点


myNode>addChile(childNode,0,123); //0是层级,123是tag属性


3.获取子节点:


CCNode *retrevedNode = myNode->getChildByTag(123);


4.通过tag删除子节点,cleanup会停止任何运行中的动作:


myNode->removeChildByTag(123,true);


5.通过节点指针删除节点:


myNode->removeChild(retrievedNode);


6.删除一个节点的所有子节点:


myNode->removeAllChildenWithCleanup(true);


7.从myNode的父节点删除myNode:


myNode->removeFromParentAndCleanup(true);

使用动作:


1.一下是一个动作的申明:


CCAction *action = CCBlind::create(10,20);


action->setTag(234);


2.运行这个动作会让节点闪烁:


myNode->runAction(action);


3.如果你想再以后使用此动作,你可以用tag获取:


CCAction*retrievedAction = myNode->getActionByTag(234);


4.你可以用tag停止相关连的动作:


myNode->stopActionByTag(234);


5.或者你也可以用动作指针停止动作:


myNode->stopAction(action);


6.你可以停止所有在此节点上运行的动作:


myNode->stopAllActions();

如果你想运行不同的方法,或者是每秒调用10次更新的方法的话,你应该使用一下代码:


void HelloScene::init()


{


     this->schedule(schedule_selector(HelloWorld::updataTen),0.1f);


}

void HelloScene::updateTen()


{


     //此方法将根据时间间隔来调用,每隔10秒


}


如果时间间隔(interval)为0的话,你应该使用scheduleUpdate方法。不过,如果你想之后停止对某个指定更新的方法的预定信息的话,上述代码更加合适。因为scheduleUpdate方法没有停止预定信息的功能。


停止预定信息


unschedule


OC中可以用一个隐式指针:_cmd


//用_cmd关键词停止当前方法的预定


[self unschedule:_cmd];


局限于OC

//随机数的产生


CCRANDOM_0_1 随机生成0-1之间的随机数


//优先级设置


this->scheduleUpdateWithPriority(0);


这里的优先级顺序是从低到高

CCScene是场景视图的第一个节点。通常CCScene的子节点都是继承自CCLayer。


问题:如果两个界面都是100M,那么瞬间就是200M太大了,怎么解决?


方法:可以加载一个loading界面来过渡!


CCTransitionFade*fade = CCTransitionFade::transitionWithDuration(1.f,Scene2::scen(),ccBLACK);  //最后一个参数是默认参数,可以不写,他默认ccBlack


//CCDirector::sharedDirector()->pushScene(fade);


//CCDirector::sharedDirector()->repleaseScene(fade);


push方法不会调用原来场景的析构方法,而replease方法会调用原来场景的内存,会调用析构函数。


问题:哪种情况用push来切换场景,哪种情况用replease来切换场景?


方法:如果是暂停来切换暂停场景,那么用pushScene,原来的游戏场景不需要释放,如果是游戏场景的切换,一般用repleaseScene方法来切换。


push一个场景必须pop才能释放内存,一般用replease来切换场景

//触摸注册事件//如果没有这个,默认的是多点触摸,Target是单点,Stand是多点触摸

void HelloWorld::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); //第二个参数是优先级,越低的优先级越高,优先响应,true是触摸吞噬,如果是true的话,那么触摸就被它获取,后面的view不在接受
}

ccTouchBegan返回的是一个BOOL值,如果是true的话,那就意味着你不想让当前的触摸事件传到到其他触摸事件处理器。你实际上是“吞下了”这个触摸事件。

接受加速计事件:

和触摸输入一样,加速计必须在启用以后才能接受加速计事件:
this->setAccelerometerEnabled(true);
同样的,层里面要加入一个特定的方法来接受加速计事件:
void HelloWorld::didAccelerate(CCAcceleration*pAccelerationValue)
{
     CCLOG("pAccelerationValue:X:%f/y:%f/z:%f",pAccelerationValue.x,pAccelerationValue.y,pAccelerationValue.z);
}

注意:

资源文件名的大小写,真机上是区分大小写的,而模拟器是不区分的。

事件间隔动作:
CCMoveTo*move = CCMoveTo::create(3,ccp(100,200));
myNode->runAction(move);

重复动作:
CCRotateBy *rotateBy = CCRotateteBy::create(2,360);
CCRepeatForever*repeat = CCRepeatForever::cease(rotateBy);

舒缓动作:
CCMoveTo *move = CCMoveTo::create(3,cpp(100,200));
//节点慢慢启动,在移动中加速
CCEaseInOut*ease = CCEaseInOut::create(move,4);
myNode->runAction(ease);

cocos2d实现了一下CCEaseAction类:
例如:CCEaseBackIn

动作序列CCSequence
CCSequence *seq = [CCSequence actions:tint1,tint2,nil];
[label runAction:seq];

回调函数:
//CCCallFunc是执行对应的回调函数,其中回调函数不可带参数。一般使用静态成员函数create创建实例
CCCallFunc *callFunc = CCCallFunc::create(this,callfunc_selector(HelloWorld::funC_CallBack));
pLabel->runAction(callFunc);
//带参数的回调CCCallFuncN,其中带一个参数,一般由静态成员create创建实例
CCCallFuncN *callFuncN = CCCallFuncN::create(this,callfuncN_selector(HelloWorld::funcN_CallBack));
pLabel->runAction(callFuncN);

void HelloWorld::funcN_CallBack(void *sender)
{
     CCLabelTTF *label = (CCLabelTTF *)sender;
     label->setStrign("hello");
     CCLog("CallFuncN的回调");
}
//带两个参数的回调
CCString *str = CCString::create("data参数");
str->retain();
CCCallFuncND *callFuncND = CCCallFuncND::create(this,callfuncND_selector(HelloWorld::funcND_CallBack),str); //最后一个参数是void*可以是任意类型
pLabel->runAction(callFuncND);

void HelloWorld::funcN_CallBack(void *sender,void *data)
{
     CCString *str = (CCString *)data;
     CCLabelTTF *label = (CCLabelTTF *)sender;
     label->setString(str->getCString());
}

//CCCallFuncO
CCString *str = CCString::create("object参数");
str->retain();
CCCallFuncO*callFuncO = CCCallFuncO::create(this,callfuncO_selector(HelloWorld::funcO_CallBack),str);
pLabel->runAction(callFuncO);

void HelloWorld::funcO_CallBack(CCObject *object)
{
     CCString * = (CCString *)object;
     CCLog("%s",str->getCString());
}

cocos2d学习笔录1的更多相关文章

  1. ios游戏开发--cocos2d学习(1)

    学习cocos2d需要一定的编程基础,最好了解objective-c的语法.至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习. 创建一个cocos2d项目,直接运行,效果如图: 左下角 ...

  2. cocos2d学习记录

    视频 - http://www.manew.com/forum-105-3.html一个论坛帖 - http://www.zhihu.com/question/21114802官网 - http:// ...

  3. cocos2d学习笔记

    doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner  收费的 CCLabl ...

  4. ADO.NET Entity Framework学习笔录(一)

    今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇. 我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS ...

  5. Cocos2d 学习资料推荐

    总算找到了一本介绍cocos2d的好书,注意,不是cocos2d-x!这本书叫 <cocos2d 权威指南> 定价99元,淘宝60多元,详细介绍了cocos2d的各个方面!不过你需要有oc ...

  6. ios游戏开发--cocos2d学习(2)

    在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...

  7. Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法)

    cocos2d使用box2d引擎,在使用CCPhysicsSprite添加精灵的时候会出现编译不通过错误. 需要注意以下几点: 1.sprite.position=ccp(p.x,p.y);这行代码一 ...

  8. Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)

    创建精灵表单: 创建动画先要把图片整合到一个图片上然后生成plist文件: 方法下载Zwoptex软件:http://www.zwopple.com/zwoptex/ 然后打开选择 create ne ...

  9. 性能测试LR学习笔录 -2

    LoadRunner基本测试流程: 制定性能测试计划(部分)  -> 创建测试脚本 -> 编译.运行测试脚本 -> 创建场景 - > 运行.监控场景.收集数据  -> 生 ...

随机推荐

  1. Tomcat免安装版的环境变量配置以及Eclipse下的Tomcat配置和测试

    Tomcat是目前比较流行的开源且免费的Web应用服务器,在我的电脑上第一次安装Tomcat,再经过网上教程和自己的摸索后,将这个过程 重新记录下来,以便以后如果忘记了可以随时查看. 注意:首先要明确 ...

  2. Codeforces Round #316 (Div. 2A) 570A Elections

    题目:Click here #include <bits/stdc++.h> using namespace std; typedef long long ll; const int IN ...

  3. Python之路Day7

    第7天主要是面向对象的内容. 学到现在越来越吃力了,从上节课开始博客就没时间写了,看看别人写的博客都那么棒.又想起了那句话比你牛逼的人都在努力,你却在放羊...唉,我写作业的效率有点低,以后得抓紧时间 ...

  4. 乐观锁&悲观锁

    悲观&乐观,只是对数据加锁的时机与粒度. 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这 ...

  5. lucene 索引查看工具

    luke 是 lucene 索引查看工具,基于 swing 开发的,是 lucene.solr.nutch 开发过程中不可或缺的工具.在测试搜索过程,进程出现搜不到东西或者搜到的东西不是想要的结果时, ...

  6. 基于visual Studio2013解决算法导论之043单源最短路径dijstra矩阵

     题目 单源最短路径dijstra矩阵 解决代码及点评 // 26单源最短路径dijstra矩阵.cpp : 定义控制台应用程序的入口点. // #include <iostream> ...

  7. Linux 下IOport编程訪问

    曾经写的一篇笔记.偶尔翻出来了,放在这里做个纪念 Linux 下IOport编程訪问 这里记录的方法是在用户态訪问IOport,不涉及驱动程序的编写. 首先要包括头文件 /usr/include/as ...

  8. C++11 thread::detach(2)

    原文地址:http://www.cplusplus.com/reference/thread/thread/detach/ public member function <thread> ...

  9. 探究绑定事件的this指向以及event传参的小问题

    this指向 直接上代码,凑合着看 <input type="button" onclick="page()" value="点我"& ...

  10. keepavlied一些参数

    priority 表示优先级 virtual_ipaddress 虚拟的IP地址(VIP) delay_loop 每个2秒检查一次real_server状态 notify_down 检测到服务down ...