自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 CocosUI之TableView

TableView(更好用的滑动窗口)基本应用TableView* tableView = TableView::create(sou, Size(49*5,47)); addChild(tableView);创建TableView的参数1是一个TableViewDataSource的对象,参数2则是显示窗口的大小。同样,也有一堆属性设置:tableView->setDir

2016-04-16 14:46:58 781

原创 CocosUI之ScrollView

Slider滑动控件(如调节音量)同样是一堆精灵组成这个控件外观ControlSlider* slider =ControlSlider::create(            "ccs-res/cocosui/sliderTrack.png",            "ccs-res/cocosui/sliderProgress.png",            "c

2016-04-16 14:46:08 701

原创 CocosUI之colorswitch和Slider

ColorSwitch(类似于开关控件)是由一堆精灵组成的ControlSwitch* s = ControlSwitch::create(            Sprite::create("extensions/switch-mask.png"),//背景            Sprite::create("extensions/switch-on.png"),//开始

2016-04-16 14:44:54 600

原创 CocosUI之九妹图和编辑框

9妹图的精灵图片比较特殊,一般都是这种圆形边角的图,而9妹图会将这个图分成9个部分,届时缩放的时候四个边角是不会缩放的。         Scale9Sprite* sprite =Scale9Sprite::create("ccs-res/cocosui/green_edit.png");        addChild(sprite);        sprit

2016-04-16 14:41:21 1159

原创 Cocos格子地图(3)

地图对象层就是一些依附于地图的对象所在的层,如下:其中的小方框就是对象,这些对象在游戏时理解为小怪和马里奥出现的位置和活动区间在.tmx中:objectgroupname="objects"width="228"height="14">  objectname="enemy"type="mushroom"x="648"y="176"/>  objectname="ene

2016-04-16 14:40:08 941

原创 Cocos格子地图(2)

坐标转换对格子地图的很多操作,尤其是对地图中特定格子的操作必须通过坐标转换完成。世界坐标转地图格子坐标:auto ev = EventListenerTouchOneByOne::create();ev->onTouchBegan= [&](Touch*touch, Event*){        /* 获取层*/        TMXLayer* layer

2016-04-16 14:39:35 818

原创 Cocos格子地图(1)

格子地图如同一块块砖瓦拼成的地板一样的地图,是由一张大图的资源文件和.tmx的描述文件组成的。创建格子地图如下(格子地图相当于节点):TMXTiledMap* map= TMXTiledMap::create("TileMaps/orthogonal-test1.tmx");addChild(map);可以通过map->setScale(x,y) 缩放地图 如果图片大小

2016-04-16 14:39:01 2094

原创 Cocos骨骼动画

生成骨骼动画的软件:Spine或者cocosStudio我们就是用做好的资源来做骨骼动画的(骨骼动画由几个描述文件和一张资源图片组成)首先,必须加入头文件:#include "spine/spine-cocos2dx.h"然后,可以使用(创建骨骼对象):spine::SkeletonAnimation* ske = spine::SkeletonAnimation::creat

2016-03-28 16:17:40 1437

原创 Cocos动画

动画基础动画不同于动作,动作的针对单帧的,动画则是多帧组合的。 // 获得精灵帧缓存对象,并且将动画帧加载到缓存SpriteFrameCache* cache =SpriteFrameCache::getInstance();cache->addSpriteFramesWithFile("animations/grossini.plist"); // 从缓存中获取动

2016-03-28 16:17:08 523

原创 cocos动作使用示例(3)

动作应用3让一个精灵跟随另一个精灵的移动,自定义动作的应用自定义跟随动作:延时动作class MyFollow : public ActionInterval{public:    static MyFollow* create(float dt, Sprite*sprite,float r) //因为是跟随另一个精灵,必须有目标精灵的参数,参数3是跟随

2016-03-28 16:15:49 429

原创 cocos动作使用示例(2)

动作应用2创建一个随机飘动的精灵,并且精灵随着飘动方向旋转。(CallFuncN+Bezier+递归+定时器) Vec2 _prevPos;  //为了便于旋转计算Sprite* _sprite; DrawNode* _drawNode;bool init(){   Layer::init();auto winSize = Director::getIn

2016-03-28 16:15:19 614

原创 cocos动作使用示例(1)

动作应用1做一个类似水果忍者的效果,每对精灵触摸一次就减血,没血后旋转消失,即需要做个进度条触摸事件+一个单精灵连续动作(callFunc+Sequence,或者RemoveSelf+Sequence) /* 基本属性设置,血量,血条 */int _hp;ProgressTimer* _timer;const int _maxHP = 88;bool init(){

2016-03-28 16:14:05 451

原创 Cocos动作(3)

瞬时动作CallFunc回调系列函数:可以在动作中做一些自定义处理,其本质上就是一个被封装为动作的回调函数,一般是同其他动作组合使用的,很重要很常用CallFunc:回调无参数CallFunc* call = CallFunc::create([]{CCLOG("called");});CallFunc* call2 = CallFunc::create(CC_CALLBA

2016-03-28 16:13:00 395

原创 Cocos动作(2)

自定义动作自定义一个延时动作:应该继承自ActionInterval主要是重载startWithTarget、init和update函数。假设我们设计一个让精灵画圆圈的动作:class MyAction : public ActionInterval{public:    static MyAction* create(float t, Vec2 cen

2016-03-28 16:12:07 412

原创 Cocos动作(1)

类图基本动作先拿延时动作开始:继承自 ActionInterval的动作Sprite* sprite2 = Sprite::create("Images/blocks.png");  addChild(sprite2);MoveBy* moveBy = MoveBy::create(3.0f, Vec2(300, 300));  moveBy->

2016-03-28 16:07:28 474

原创 Cocos进度条和批处理渲染

进度条进度条实际上就是用ProgressTimer挡住一个精灵,之后随着时间逐渐展开Sprite* bg = Sprite::create("ccs-res/cocosui/loadingbar.png");//背景Sprite* fore = Sprite::create("ccs-res/cocosui/slidbar.png");//前景ProgressTimer

2016-03-28 16:04:41 830

原创 Cocos节点的生命周期

Scene:                                                  new,init                                     (OnEnter)new,init——》replaceScene————————》replaceScene(onEnter)儿子们的onEnter                     (

2016-03-28 16:03:51 789

原创 绘制——如何在cocos中画画

原来的方法:先定义命令对象 CustomCommand _customCommand; 再重载void draw(Renderer*renderer, const Mat4 &transform, uint32_t flags) {       /* 初始化一个命令参数 */        _customCommand.init(_globalZOrder,transf

2016-03-28 16:03:18 1187

原创 Cocos节点

节点都是Node对象,节点各自记录了其属性,这些属性会在渲染上体现出来。Scene往往是树根,每个节点的儿子们被方在了Vector_children中,自然也有节点的增删改查(addChild;removeChild;removeChildByTag;removeFromParent;removeChildByName;getChildByTag和ByName。。。)节点的内容:setLo

2016-03-28 16:02:47 1008

原创 Cocos缓存的实现

纹理缓存实现:纹理保存于std::unordered_mapstring,Texture2D*> _textures;的一个map映射中,显然,string就是其文件名称。这里的map是不会添加引用计数的纹理缓存实现主要是看addImage()函数实现,其首先根据文件路径创建一个全路径,之后查看是否已经缓存过,如果是的话则获取这个纹理,反之,则加载该纹理,将数据存入Image对象中(new

2016-03-28 16:02:16 784

原创 Cocos精灵帧缓存

精灵帧就是多个小图组成的一张大图,这样减少了加载次数。且大图的“边角料”比小图的要少很多,提高了内存使用率。一般来说,精灵帧由plist(描述文件)和一张大图组成。(可以用TexturePacker——一种专业软件将若干小图生成一份精灵帧)精灵帧缓存:也是单例SpriteFrameCache* cache = SpriteFrameCache::getInstance();添加

2016-03-28 16:01:37 1007

原创 Cocos纹理缓存

什么是纹理:纹理是一个3d概念,要表现立体时,将物体的面表示为不连续的表面,每个面就是纹理。仅就2d而言,纹理就是一张图片,更便于渲染。纹理缓存:因为图片到精灵的过程,需要许多操作(压缩格式到非压缩格式,非压缩格式到渲染格式),这些操作要游戏开始之前,先要准备好,准备好的数据,放在缓存里。纹理缓存对象是一个单例:且保存在导演对象中TextureCache* cache = Dire

2016-03-28 16:00:59 829

原创 cocos渲染过程

run()->while(){mainLoop()}->drawScene()->if(_runningScene)…_runningScene->render(_renderer);->visit()->draw和visit其他内容。Render就是渲染函数,其中有Camera这个概念,因为cocos是有3d的,camera负责纹理的显示,如visibleByCamera 表示只有肉眼看到的

2016-03-27 10:47:10 657

原创 Cocos音效

Cocos提供了声效标准:#include "SimpleAudioEngine.h"using namespace CocosDenshion;使用方法:SimpleAudioEngine* sae =SimpleAudioEngine::getInstance();可见SimpleAudioEngine 是一个单例播放背景音乐sae->playBackgro

2016-03-27 10:44:47 637 1

原创 Cocos场景切换和屏幕截取

1.      场景是导演的调度单位,是保存在Director类中的(用栈结构),所有的游戏内容均以场景为根。2.      活动场景其实就是栈顶的场景3.      replaceScene就是用参数指定场景,替换栈顶的场景4.      pushScene实际是往栈顶增加一个场景,原来的栈顶场景被暂停(包括定时器)5.      popScene删除栈顶场景,让下一个栈顶的场景

2016-03-27 10:44:01 907

原创 CocosGUI---Menu

class CC_DLLMenuItem : publicNodeclass CC_DLLMenu : publicLayerMenu负责响应触摸,MenuItem负责显示菜单项创建:Menu* menu = Menu::create();        addChild(menu);MenuItem* item = MenuItemImage::cre

2016-03-27 10:42:51 343

原创 CocosGUI---Label

class CC_DLLLabel : publicSpriteBatchNode, public LabelProtocolLabel不想Sprite的create函数是由init函数的,所以,通常我们创建Label不用create,而是createWith…()函数。Label的创建1.  Label* label = Label::createWithSystem

2016-03-27 10:42:07 368

原创 Cocos设计分辨率(glView)

在AppDelegate::applicationDidFinishLaunching() 中有glview->setFrameSize(480,320); 以及glview->setDesignResolutionSize(1200/2,1200*320/480/2,ResolutionPolicy::NO_BORDER);还有函数:director->setContentScale

2016-03-27 10:41:06 1363

原创 Cocos容器——Vector

注意并不是std::vector,cocos容器是大写VVector只能添加Ref和其子类对象,其主要意义在于会自动retain这个对象访问方式:创建VectorSprite*> vec;          插入1vec.pushBack(Sprite::create());尾部插入           插入2 vec.insert(0, Sprite::create());中

2016-03-27 10:40:30 401

原创 cocos内存管理

C语言的内存管理:申请内存 malloc,释放内存freeC++申请内存 new 释放内存用delete cocos2dx申请内存用create之后就不管了,其原因是因为create函数调用了autorelease(当然本质上仍然是用new申请内存和delete释放,只是cocos通过机制自动化了上述操作) 1. autorelease是用于智能管理释放的2.

2016-03-27 10:39:17 440

原创 cocos碰撞检测

// 两个矩形的碰撞检测,主要看boundingbox是否接触        Rect rc1 =_spriteAuto->getBoundingBox();        Rect rc2 =_spriteCtrl->getBoundingBox();        if(rc1.intersectsRect(rc2))则认为碰撞         // 两个圆的碰撞检测,看圆

2016-03-27 10:38:20 911

原创 Cocos定时器

定时器是单线程的,都是由主线程启动并处理的,多个定时器之间不是并行关系,而是递次执行的。启动:scheduleUpdate(对应一个专属回调函数update(float))和schedule 回调函数void update(float dt) 覆盖父类的虚函数,所以必然是成员函数void timeout(float dt) 可以用schedule_selector指定的成员函数

2016-03-27 10:37:43 673

原创 Cocos单点触摸

四大回调函数,began负责手按下处理,Move负责移动处理,Ended负责松手,Cancled负责中断(如被电话中断)1. 消息监听对象:设置回调函数,之后还要将对象(一般是Layer,也可以是Sprite)和回调处理函数绑定到监听对象上2. 消息派发器:将监听对象加入到派发器,以便将来有消息时,回调指定函数3. TouchBegan函数    当触摸开始时被调用,如果返回tru

2016-03-27 10:34:18 572

原创 Cocos坐标体系

有如下几个概念:表示方法:Vec2 其本质上就是一个Point,由两个float组成,表示x和y。UI坐标:手机的定义坐标,其原点是在左上角的,我们通常把带有View的函数认为是和UI坐标相关的函数,可以获取UI坐标的触摸对象:touch->getLocationInView()OpenGl坐标:这是一个三维坐标,原点在左下角世界坐标:遵循OpenGL坐标标准,原点也在左下角,sc

2016-03-27 10:33:34 514

原创 Cocos精灵

精灵创建精灵精灵可以通过图片、纹理、精灵帧来创建,至少挂在layer上(当然可以挂在其他精灵上)。创建方法: Sprite在Layer中的init()函数中直接创建,建好之后应该addChild这个精灵class SpriteCreate : public Layer{public:    static Scene* createScene()//创建自定义sc

2016-03-27 10:32:44 659

原创 Cocos 安装和配置和初探(创建自己的Scene

Cocos 安装和配置1. 解压cocos2d-x-3.6.zip开发包到某个目录(目录不带空格,不带中文,不带古怪符号)2. 安装python,默认步骤即可3. 设置python的环境变量4. 打开终端,在cocos2dx开发包目录下,执行setup.py,有提示直接回车5. 重新打开终端,执行cocos newProjectName -l cpp -d d:\cocos

2016-03-27 10:30:11 432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除