cocos2d-x

cocos2d-x—使用shader使图片背景透明

本小妞迷上赌 提交于 2020-03-26 06:05:05
这里用shader处理了像素,使黑色背景透明,直接上代码 ShaderSprite.h [cpp] view plain copy print ? #ifndef __TestShader__ShaderSprite__ #define __TestShader__ShaderSprite__ #include "cocos2d.h" USING_NS_CC; class ShaderSprite : public CCSprite { public : static ShaderSprite* create( const char * pszFileName); virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect); virtual void draw( void ); }; #endif /* defined(__TestShader__ShaderSprite__) */ ShaderSprite.cpp [cpp] view plain copy print ? #include "ShaderSprite.h" static CC_DLL const GLchar *transparentshader = #include "tansparentshader.h"

走了很多弯路的CCScrollView

六眼飞鱼酱① 提交于 2020-03-26 00:33:59
  最近在学习Cocos2d-x,学习CCScrollView的时候走了很多弯路,决定记录下来。 学习cocos2d-x的最大的困惑就是资料不是很齐全,网上有很多资料,但是版本差异大,其次深度低,讲解不够透彻,最后发现想更好的理解只能去看源码。后来发现想用好cocos2d-x必须要看懂源码,因为有不少坑等着你踩。 CCScrollView是用来做屏幕滚动的UI组件,一个简单的CCScrollView的实现是这样的      chatArea是一个CCScrollView*的对象,container是一个CCNode*对象,CCSrollView需要设置一个View相当于一个窗口,一个Container作为容器,窗口在容器上滚动,用户可以看到不同的内容,一般container比view会大      坑爹的地方来了,如图所示         这三句话的设置顺序是不能变的!!我学习的时候没有在我找到的资料上看到这个规定,比如那个蓝本的高级开放教程的,红白的权威指南啊(真心名不副实)      为什么顺序不能变,我们看源码就知道了,源码分析请移步 http://blog.csdn.net/it_small_farmer/article/details/38301607 ,这位仁兄的博客      简要说一下,在setContainer中设置了this->m_pContainer =

cocos2d-x ScrollView、TableView

我怕爱的太早我们不能终老 提交于 2020-03-22 09:08:54
转自: http://codingnow.cn/cocos2d-x/1024.html 在游戏和应用中经常要实现左右滑动展示游戏帮助、以列表显示内容的UI效果,就像android中的Gallery和ListView。本文通过CCScrollView和CCTableView分别来实现这两个效果,基于cocos2d-x 2.0.4版本。 首先来简单了解一下这两个东东,CCScrollView本身是一个CCLayer,而CCTableView是CCScrollView的子类,这是引擎已经帮我们封装好了的,CCTableView可以设置成横向和纵向,用它可以实现类似于Gallery和ListView的效果。 1. 首先实现游戏帮助界面 (1) 创建头文件GalleryLayer.h #ifndef GALLERY_LAYER_H #define GALLERY_LAYER_H #include "cocos2d.h" #include "SimpleAudioEngine.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; class GalleryLayer : public cocos2d::CCLayer ,public CCScrollViewDelegate { public: virtual bool init();

cocos2d-x开发记录:二,基本概念(骨骼动画)

蹲街弑〆低调 提交于 2020-03-07 07:48:45
九,骨骼动画 1.骨骼动画vs Sprite sheets 你能使用sprite sheets 创建动画,它很快又容易。直到你意识到你的游戏需要大量的动画并且内存消耗越来越高,并且需要时间载入全部数据。为了限制大小,你需要为动画限制到比较低的FPS,然后动画看起来不会如你所期望的那么平滑。这时你就需要骨骼动画了。 2.骨骼动画简介 骨骼动画在cocos2d-x动画是一个技术,一个角色由两部分组成:一个显示的表皮和类似人骨头样的网格。 Cocos2d-x提供了一种方式来在你的应用程序中使用2 D骨骼动画。骨骼动画设置的过程可能有些复杂,但使用起来很容易,当然有一些工具能简化这个过程。当使用骨骼动画时,动画是由几个骨头批次连接组成。影响一个骨头也会影响它下面的所有子元素。通过在每个骨头不同的组合转换,你可以获得不同姿势的骨架。 如果对于一个时间点的每个骨骼使用某个转换定义关键帧,你能插入关键帧来让骨骼动画更为平滑。附加代码中,我使用一个类,名叫Transformation,它包含2D转换数据,如平移,旋转,缩放。然后一个关键帧通过一个帧数被定义成一个这样的转换。一个关键帧定义了一个KeyframeAnimation的集合。最后一个SkeletonAnimation是一个KeyframeAnimations集合,一个用于每个骨骼。另外,你使用一个骨骼,保持关节的列表定义骨骼的层次结构

Using sprite atlases in a multi resolution setup in Cocos2D-x

假如想象 提交于 2020-03-05 07:25:25
问题 I've just been able to setup a Cocos2d-x for a multiresolution environment. Ie supporting all/most of the available iPhone screen sizes. My next step is to scrap the individual files (bunch of pngs) and use sprite atlases (aka sprite sheets) instead. How does this work in Cocos2D-x? Does anyone have a working sample setup? Once again, Google and existing documentation (well, I don't think that exists) fail me. 回答1: For cocos2d-x v3.5... The cocos2d-x test classes are always a great place to

Using sprite atlases in a multi resolution setup in Cocos2D-x

瘦欲@ 提交于 2020-03-05 07:24:27
问题 I've just been able to setup a Cocos2d-x for a multiresolution environment. Ie supporting all/most of the available iPhone screen sizes. My next step is to scrap the individual files (bunch of pngs) and use sprite atlases (aka sprite sheets) instead. How does this work in Cocos2D-x? Does anyone have a working sample setup? Once again, Google and existing documentation (well, I don't think that exists) fail me. 回答1: For cocos2d-x v3.5... The cocos2d-x test classes are always a great place to

2.Scene里面添加精灵

我只是一个虾纸丫 提交于 2020-03-03 23:26:07
Step 1. 声明头文件 #ifndef MainScence_hpp #define MainScence_hpp #include <stdio.h> #include "cocos2d.h" class MainScence : public cocos2d::Scene { public: static cocos2d::Scene* createScene(); virtual bool init(); // implement the "static create()" method manually CREATE_FUNC(MainScence); }; #endif /* MainScence_hpp */ Step2. 声明cpp文件 #include "MainScence.h" USING_NS_CC; Scene* MainScence::createScene() { return MainScence::create(); } bool MainScence::init() { auto visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto label = Label

【Cocos2d-x-基础概念】Animations

我是研究僧i 提交于 2020-02-29 16:27:49
#Cocos2d-x-基本概念-Animations ###帧动画 你可以通过一系列的图片来创建一个童话,如下 CCAnimation *animation = CCAnimation:create(); //load image file from local system to CCSpriteFrame, then add into CCAnimation for (int i = 0; i < 15; ++i) { char szImageFileName[128] = {0}; sprintf(szImageFileName, "Images/grossini_dance_%02d.png", i); animation->addSpriteFrameWithFilename(szImageFileName); } animation->setDelayPerUnit(2.8f / 14.0f);// This animation contains 14 frames, will continuous 2.8 seconds. animation->setRestoreOriginalFrame(true);// Return to the 1st frame after the 14th frame is played. CCAnimate *action =

cocos2d-X学习之主要类介绍:节点CCNode

天涯浪子 提交于 2020-02-29 14:23:12
首先是类结构: 可以看到CCNode 几乎是游戏中处理的大部分类的父类,其主要有以下函数: virtual int getZOrder (void) //获取节点的顺序 virtual const CCPoint & getPosition (void) //获取节点的位置 virtual void setPosition (const CCPoint &var) //设置节点的位置 virtual CCArray * getChildren (void) //获取其所有子节点 virtual CCCamera * getCamera (void)//获取其对应的摄像机 virtual bool getIsVisible (void) //判断节点是否可见 virtual void setIsVisible (bool var) //设置节点可见性 virtual const CCPoint & getAnchorPoint (void) //获取节点的锚点的位置 virtual void setAnchorPoint (const CCPoint &var) //设置节点的锚点位置 virtual bool getIsRunning (void) //判断节点是否在运行 virtual CCNode * getParent (void)//获取父及节点指针 virtual

Cocos2d-x 3.x中Draw calls与ZOrder和纹理材质的关系

谁都会走 提交于 2020-02-29 13:41:45
在Cocos2d-x 3.x中官方优化了引擎渲染的过程 例子 假如有A,B,C三个在不同plist的纹理,且他们的材质不相同,如果程序中 A-1 (表示 addChild(A,1),以下一样) B-1 C-1 Cocos2d-x引擎首先会根据所有子节点ZOrder从小到大依次绘制,在这里ABC都是1,但是ABC材质都不相同,所以 Draw calls = 3 假如程序中是 A-1 B-1 A-2 和上面一样分析,Cocos2d-x引擎首先会根据所有子节点ZOrder从小到大依次绘制,在这里AB都是1,先绘制,但是AB材质都不相同,所以此时 Draw calls = 2,接着A-2绘制A,Draw calls = 3 假如程序中是 A-1 A-2 B-3 从小到大依次绘制,在这里两个A先绘制,且材质都相同,所以此时 Draw calls = 1,接着绘制B-3,Draw calls = 2 博客其他文章列表 http://my.oschina.net/helu/blog 来源: oschina 链接: https://my.oschina.net/u/178283/blog/761396