Ⅰ cocos2dx进度条怎么换背景
SizeVisibleSize=Director::getInstance()->getVisibleSize();Vec2VisibleOrigin=Director::getInstance()->getVisibleOrigin();//BackGround1_BackGround_1=Sprite::create("background.jpg");floatScaleTimes=VisibleSize.height/_BackGround_1->getContentSize().height;//计算缩放倍数_BackGround_1->setScale(ScaleTimes);
Ⅱ cocos2dx createwithcharmap 必须是什么样的png
: 利用背景定位就可以了, 比如你有一个 PNG图片 叫 1.png 大小是 300 X 300 里面的 小图标大小是 30 X 30 大概在中间的话 那可以这样显示 重要的
Ⅲ cocos2dx 加载cocostudio ui界面时会卡住。
1CocoStudio场景编辑器前面的文章《使用CocoStudio创建Cocos2d-x序列帧和骨骼动画》《如何使用CocoStudioUI编辑器实现《乱斗堂》设置界面》,其中介绍了如何使用动画编辑器创建动画与使用UI编辑器创建游戏配置界面,而本文将集两者之大成,使用CocoStudio场景编辑器来创建游戏场景,其中包含游戏UI与动画,来定制一个游戏主界面。2使用CocoStudio完成《魔卡幻想》场景编辑对于环境的搭建使用,请参考之前的文章,或者实时关注官方最新版本的安装使用方法。2.1UI编辑器制作游戏主界面创建项目(项目名称:MysticalCard),并导入项目UI资源,添加一图片框设定背景图片。注意在工具拦设置“画布”的大小(如果需要),这将决定着你的设计分辨率,在运行时还需要注意屏幕的适配问题,如放大缩小,位置偏移等,视具体情况而定。为界面添加UI元素,图片框等,请根据自己的需要定制实践过程中的注意事项添加控件时注意必要的属性设置控件的命名规范,这有助于我们今后在后台编写代码获取界面元素可交互的控件的“可交互属性”开启2.2建立关键帧动画除了主界面一些必要的UI控件,我们还需要一个“对话框指示”的动画效果。这是一个帧动画。准备工作。如下图所示:打开CocoStudio,启动动画编辑器创建一个新的项目,后导入资源(在“资源窗口”中,点击“文件”或者“文件夹”标示,添加需要的素材资源)在“资源窗口中”点击关键帧动画的守帧图片,拖动至“渲染窗口”将第一关键帧拖动至“渲染窗口”中心。可以使用工具栏,快速定位至窗口中心,使图片显示在正中间,可以让动画更好的定位。添加其它帧图片,注意,我们需要选中剩余图片,然后“拖动”到“对象结构”视图中的“第一关键帧”所在的对象,如下图所示。关键帧与骨骼动画操作区别:在使用骨骼动画的时候,我们将骨骼中的各部分元素,直接拖动添加到“渲染窗口”,以摆放各骨骼的位置关系,而在“对象结构”视图中则表现为,一个列表,标示着每一块骨骼对象,不同帧所改变的是各个骨骼对象的位置,以达到骨骼动画效果。而在关键帧动画中,它的对象结构只有一个,而在每一帧修改的不是其位置,而是其显示内容。这是两者之间的区别,那操作方式也有所不同。而对于它们所导出的资源则是相同,用法也是同样。剩余帧添加之后,我们看见在“关键帧”视图中,已经有了多帧动画,可以播放动画,查看效果,并可以通过修改“速率”来控制动画的播放速度。导出动画资源,导出的资源文件可以被我们在Cocos2d-x中以代码的方式直接加载,然后播放其动画,也可以作为场景编辑器中的一个元素,被添加在场景编辑器里,后面的内容就是使用场景编辑器来加载一个动画的方式。2.3场景编辑器的资源“整合”使用CocoStudio可以很好的帮助游戏开发过程中分工合作。动画编辑器和UI编辑器可以由多个人进行编辑,最后再由一个人统合资源,这也就是场景编辑器的优点了,它除了能支持CocoStudio本身所自带的动画编辑器,UI编辑器,它还能支持,Tmx地图资源,粒子编辑器的粒子效果资源,声音资源等~并且不断扩展中。以下将给出如何在场景编辑器整合我们之前所创建的动画与UI界面的资源,来实现我们一个场景的运行效果。它的步骤如下:启动场景编辑器,新建一个场景项目。并设置“画布”大小。画布大小要适量。我们拖动一个UI控件到画布之上,它作为我们之前导出的UI资源的承载。我们将之前的UI编辑器所导出的资源,导入到当前场景项目中来,导入方式与UI编辑器导入资源方式同样,如下图:为UI控件的“文件”属性赋值:我们在资源视图中找到UI编辑器所导出的UI资源,其目录下包含json文件资源(如这里的“MysticalCard_1.json”),将其拖动到UI控件的文件属性中去,如下图所示:前面的步骤已经将UI资源导入场景之内,现在需要添加之前所创建的动画资源。我们以相同的方式导入动画编辑器所导出的动画资源文件。拖动一个骨骼控件至场景界面,如下图所示。为骨骼控件的“文件”属性赋值,其值为动画资源中的ExportJson(或者json文件,这取决于动画资源的导出方式)文件。运行效果:当我们建立好场景之后,可以通过工具栏运行按钮,点击查看效果,这意味着你不用将所有的资源文件,手动以代码的方式添加到Cocos2d-x中,便能看到效果。在运行效果中,所有的控件都是可操作的,如下图,但这里只有点击效果,如果需要实现其逻辑,那么现在需要将其加载到Cocos2d-x项目中,编写后台代码实现。3在Cocos2d-x中加载场景资源并运行之3.1加载场景内容前面那么多步骤,使用CocoStudio来创建了UI,动画,还有一个场景,而要将其运行在实际的项目中,就非常的简单与方便了,只需几行代码,就能够将其加载到项目中去,当然在这之前我们需要将场景编辑器的资源(场景项目目录中“Resources”目录,其中将包含一个json文件)复制到项目资源目录中去://加载场景资源CCNode*pNode=CCJsonReader::sharedJsonReader()->createNodeWithJsonFile("McScene.json");this->addChild(pNode);通过CCJsonReader来读取解析json,从而获得场景中的节点内容,直接添加到当前的场景就能运行。3.2在场景中播放动画默认加载的场景资源动画组件是没有播放的,需要手动获取动画组件对象,然后调用其播放方法,当然这个步骤也是非常简单的://pNode为之前所获取的场景资源根节点,通过此节点获取到动画对象,获取方式根据在场景编辑其中设置的层次关系而定CCComRender*pLoadRender=(CCComRender*)(pNode->getChildByTag(1)->getChildByTag(1)->getComponent("CCArmature"));CCArmature*armLoad=(CCArmature*)(pLoadRender->getRender());//播放动画armLoad->getAnimation()->playByIndex(0);3.3对场景的一些编码说明使用CocoStudio就是为了帮助我们快速的建立UI原型,然后通过编码可以获取到里面的任意一个元素对象,并修改其属性值,调用其方法,正如上面所示播放一个动画的方法同样。其步骤如下:通过CCJsonReader类读取json文件,将会自动解析构建对象,返回一个节点CCNode任何元素都能通过这个CCNode节点,获取到,它其实就是一个树,所不同的是层级关系(树节点的位置)找到需要对象所在的“树枝”,后通过getComponent方法获取所在的CCComRender对象通过CCComRender的getRender方法获取最终对象得到我们所需要的具体对象之后,我们就能够对齐进行草,设置属性,调用方法等,诸如此类本文中所有的源码示例和CocoStudio项目工程都可以在这里查看。
Ⅳ Cocos2dx 如何实现对背景进行模糊处理以达到突出某一个Sprite
动作(Actions)
move移动:moveto/moveby 从一个位置移动到另外一个位置 从一个位置移动多少数量级
rotate旋转:rotateto/rotateby 从一个角度旋转到另外一个角度 旋转多少个数量级
scale缩放:scaleto/scaleby 放大缩小到什么程度
skew倾斜:skewto/skewby 倾斜到什么程度
rotationalskew旋转着倾斜:rotationalskewto/rotationalskewby 旋转着倾斜
Skew+scale+rotate倾斜+缩放+旋转
jump跳跃:jumpto/jumpby 跳跃到某个位置,或者以某个数量接跳跃
cardinalspline,catmullrom沿着某个路径移动:沿着某个图形移动,可以是规则的图形也可以是不规则图形
bezier两个精灵重叠在一起一个在前面,一个在后面:bezierto/bezierby
blink一闪一闪的效果
fadein/fadeout淡入淡出效果
tint色彩:tintto/tintby 改变小精灵的色彩
animation动画:让小精灵呈现动态效果
sequence:move+rotate:移动加旋转序列
sequence:move+rotate+scale+removeself:移动,旋转,缩放,让自己消失
spawn:jump+rotate:一边跳一边旋转,向翻跟斗一样
reverse an action:执行一个动作相反的动作
delaytime延迟时间:move+delay+move移动+延迟一段时间+移动
repeat/repeatforever:重复执行或者永久重复执行动作
reverse a sequence:反向执行一个序列
orbit camera:轨道摄像机
pauseresumeactions:暂定和继续actions
过渡(transitions)
所谓过渡也就是第一个场景如何过渡到第二个场景,可以添加很多效果。
CCTransitionProgressInOut:一个场景以一个长方形的形式逐渐变大,然后显示另外一个场景。
CCTransitionProgressOutIn:一个场景逐渐变小,直到消失,是通过一个大长方形到一个小长方形消失的,然后组件显示第二个场景,先显示的是第二个场景外围的区域,然后再显示第二个场景里面区域。
CCTrasitionCrossFade:一个场景渐出,一个场景渐入
TransitionPageForward:向前翻页效果
TransitionPageBackward:向后翻页效果
CCTransitionFadeTR:第一个场景从左下角开始淡出一直到右上角,第二个场景从左下角开始淡入一直到右上角
CCTransitionFadeBL:第一个场景从右上角开始淡出一直到左下角,第二个场景从右上角开始淡入一直到左下角
CCTransitionFaceUp:第一个场景从底部开始淡出一直到顶部,第二个场景从底部开始淡入一直到顶部
CCTransitonFadeDown:第一个场景从顶部开始淡出一直到底部,第二个场景从顶部开始淡入一直到底部
CCTransitionTurnOffTiles:以随机的顺序关闭掉外出的场景的砖瓦
CCTransitionSplitRows:奇数行向左出,偶数行向右出
CCTransitionSplitCols:奇数行向下出,偶数行向上出
CCTransitionFade:出去的场景淡出,屏幕变黑,进来的场淡入
FadeWhileTransition:出去的场景淡出,屏幕变白,进来的场淡入
FlipXLeftOver:沿着X从左翻转
FlipXRightOver:沿着X从右翻转
FlipYUpOver:沿着Y从上,翻转
FlipYDownOver:沿着Y从下翻转
FlipAngularLeftOver:从某个角度在左边翻转场景
FlipAngularRightOver:从某个角度在右边翻转场景
FlipAngularUpOver:从某个角度在上边翻转场景
FlipAngularDownOver:从某个角度在下边翻转场景
ZoomFlipXLeftOver:沿着X从左翻转,而且有放大缩小效果
ZoomFlipXRightOver:沿着X从右翻转,而且有放大缩小效果
ZoomFlipYUpOver:沿着Y从上翻转,而且有放大缩小效果
ZoomFlipYDownOver:沿着Y从下翻转,而且有放大缩小效果
ZoomFlipAngularLeftOver:沿着某个角度从左翻转,而且有放大缩小效果
ZoomFlipAngularRightOver:沿着某个角度从右翻转,而且有放大缩小效果
CCTransitionShrinkGrow:缩小出去的场景,放大进来的场景
CCTransitionRoToRoom:一边旋转一边缩放
CCTransitionMoveInL:从左边进入
CCTransitinMoveInR:从右边进入
CCTransitionMoveInT:从上边进入
CCTransitionMoveInB:从下边进入
CCTransitionSlideInL:从左边滑动着进入,滑动的过程中把第一个场景推出去了
CCTransitionSlideInR:从右边滑动进入
CCTransitionSlideInT:从上边滑动进入
CCTransitionSlideInB:从下边滑动进入
CCTransitionJumpZoom:跳动加缩放
进度动作actionprogress
参考ActionsProgressTest
SpriteProgressToRadial:精灵沿着径向执行进度动画
SpriteProgressToHorizontal:精灵沿着水平方向执行动画
SpriteProgressToVertical:精灵沿着垂直方向执行动画
:精灵沿着中点改变时的那个径向执行进度动画
SpriteProgressBarVarious:精灵执行进度条动画时,精灵所在的那个条不断变化
SpriteProgressBarTintAndFade:精灵执行进度条动画时,颜色变化,并且有淡出效果
SpriteProgressWithSpriteFrame:并不仅仅是精灵执行动画,精灵所在的整个frame执行动画效果,包括精灵所在的那个frame旁边的填充
特效effects
TurnOffTiles: 以随机的顺序关闭tiles
WavesTiles3D:3D效果摇摆tiles
JumpTiles3D:3D效果tiles跳跃起来,这样就能看到每个tile下面的背景了
SplitRows:将整个场景分成若干行,奇数行往左,偶数行往右
SplitCols:将整个场景分成若干列,奇数列往下,偶数列往上
PageTurn3D:3D翻页效果
Shaky3D:整个页面震动效果
Waves3D:整个页面波动效果
FlipX3D:3D水平方向翻转效果
FlipY3D:垂直方向翻转效果
Lens3D:3D棱镜效果
Ripple3D:3D波纹效果
Liquid:液体晃动效果
Waves:波动效果
Twirl:转动效果
ShakyTiles3D:tiles震动3D效果
ShatteredTiles3D:肢离破碎的tiles3D效果
ShuffleTiles:将所有的tiles混乱排列的效果
FadeOutTRTiles:tiles从左下角向右上角淡出
FadeOutBLTiles:tiles从右上角向左下角淡出
FadeOutUpTiles:tiles从下向上淡出
FadeOutDownTiles:tiles从上向下淡出
点击和移动(ClickAndMove)
ClickAndMoveTestScene:每当点击鼠标左键时,小精灵更随着我们的鼠标移动
整个世界都在旋转(RotateWorld)
RotateWorldTest:整个世界都在旋转,包括小精灵,整个页面,页面里分块旋转
粒子运动组成各种效果(Particle)
下雪,下雨,烟花效果灯。
精灵缓入缓出效果(SrpiteEaseInOut)
EaseIn:缓入
EaseOut:缓出
精灵运动轨迹(MotionStreak)
HighQualityMode/FastMode
绘制原始的各种几何形状(DrawPrimitives)
绘制三角形,曲线,多边形等等
节点(Node)
这个到底是什么意思,不太懂
触碰测试(Touches)
每当小精灵触碰到一个东西时,做一些事情
菜单(Menu)
在屏幕上可以显示若干个菜单项,点击之后可以是一个菜单,也可以做一些事情,比如返回到主菜单,退出游戏,进行一些设置
动作管理器(ActionManager)
通过动作管理器对精灵如何执行一些列动作进行管理。
LogicTest:先执行什么动作再执行什么动作的逻辑进行控制
PauseTest:让一个动作暂停
ResumeTest:继续一个动作
RemoveTest:移除一个动作,从而让Grossini不会碰撞墙壁
层(Layer)
LayerRGBA:两个精灵分别在不同的层,改变每个层的RGBA,从而知道他们是不同的层
场景(Scene)
pushScene()/popscene/popSceneToRoot 这些是常用的在不同的Scene之间切换的方法,所有的场景存放在一个栈之中。
Parallax:Parent and 3 childrens
搞不懂的东西
地图(TiledMap)
用地砖堆砌起来的地图相关展示
时间间隔(Interval)
精灵执行动作的时间间隔,比如从一个地方跳跃到另外一个地方的时间间隔如何控制
标签(Label)
如何使用标签展示数据,以及随着时间的推移更新标签的值
文本输入框(TextInput)
不同的文本输入框,有不同的缺省行为
CCTextFiledTTF:缺省行为是每输入一个字符就跳动一下,并且可以限制字符个数
TextFieldTTF:缺省行为什么也没干
精灵(Sprite)
精灵能够执行一些力动作,比如旋转,缩放等等
时间表(Scheler)
使用Scheler利用timeScale实现快进和回退功能
渲染纹理(RenderTexture)
搞不懂
2d纹理
搞不懂
物理引擎Chipmunk,Box2D
物理引擎的测试,比如说模拟一个物体在有重力的环境下等情景。
高级的特效EffectsAdvanced
小键盘(Keypad)
后台音乐播放相关(CocosDenshion)
音乐播放,暂停,回放,音量控制等等
性能优化相关(Performance)
精灵个数啥的,node,纹理,particle,触碰等等相关性能如何优化。
扩展(Extensions)
在extensions中提供给我们的在以后版本中可能会添加到标准api中的类,是一些比较高级和容易使用的功能。
字体(fonts)
和本地化相关(current language)
如何获取本地语言
纹理缓存(TextureCach)
纹理缓存不懂
阴影相关(Shade)
多点触摸(MultiTouch)
多点触摸相关类如何使用
剪切(Clipping)
不懂
文件操作(FileUtils)
如何操作文件相关的演示
人体脊椎各个部分如何运动(spine)
精灵的各个关节如何运动,实现动态精灵效果啥的
Ⅳ 怎样设置cocos2dx背景透明
方法/步骤
1
废话不多说,先放图。
2
就如果你想让你的activity透明,很简单,只需要4步。1. 打开AndroidManifest.xml文件,添加Translucent到
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
3
2.打开Cocos2dxActivity.java文件,添加
getWindow().setFormat(PixelFormat.TRANSLUCENT);
4
3.打开cocos2d/cocos/2d/CCDirector.cpp文件,找到setGLDefaultValues()函数,修改最后一个alpha值,范围从0.0f到1.0f。
5
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
6
4.打开cocos2d/cocos/2d/platform/android/nativeactivity.cpp,找到engine_init_display(struct engine* engine)函数,修改如下数组
7
从
const EGLint attribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_BLUE_SIZE, 5,
EGL_GREEN_SIZE, 6,
EGL_RED_SIZE, 5,
EGL_DEPTH_SIZE, 16,
EGL_STENCIL_SIZE, 8,
EGL_NONE
};
到
const EGLint attribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
//EGL_BLUE_SIZE, 5, -->delete
//EGL_GREEN_SIZE, 6, -->delete
//EGL_RED_SIZE, 5, -->delete
EGL_BUFFER_SIZE, 32, //-->new field
EGL_DEPTH_SIZE, 16,
EGL_STENCIL_SIZE, 8,
EGL_NONE
};
Ⅵ Cocos2dx如何根据手机屏幕设置分辨率
上面的360*640 只不过是设置当前调试窗口的大小,仅用来调试看的,对移植到实际设备上不起任何作用。下面的720*1280 才是关键,意思是不管实际设备的分辨率是多少都按这个比例进行缩放,不管它是1080p还是480p都可以自动适应,这个分辨率一般设为你的资源图片的分辨率,这个很好懂的
Ⅶ 如何使用particleeditor编辑器
使用方法
particle-editor编辑器无需安装,下载解压后即可使用,它的编辑界面如下:
菜单栏的 Samples 下为用户提供了一些常用的粒子特效,如烟花、火、流星等,你可根据需要创建不同的粒子群。
属性讲解
编辑器的属性:
IsBackgroundMove 编辑器背景图片是否滚动,如果你觉得它动来动去的很烦人,你可以把它设置为False
IsSaveTextureImageData 是否把图片数据编码到文件里导出,这里我建议把它设置为False
Scale 编辑器画布缩放比例大小
编辑器的属性只影响编辑器内的预览效果,不对保存的.plist文件产生影响。而下面的所有属性都对应Cocos2dx中粒子系统的各属性,会直接影响生成的.plist文件。
主要属性:
Duration 发射器生存时间,即它可以发射粒子的时间,注意这个时间和粒子生存时间不同。单位秒,-1表示永远;粒子发射结束后可点击工具栏的播放按钮再次发射
EmissionRate 每秒喷发的粒子数目
IsAutoRemoveOnFinish 粒子结束时是否自动删除
Mode 喷发器模式,有重力模式(Gravity)和半径模式(Radius,也叫放射模式)两种
TotalParticles 场景中存在的最大粒子数目,往往与EmissionRate配合起来使用
半径模式:半径模式可以使粒子以圆圈方式旋转,它也可以创造螺旋效果让粒子急速前进或后退。下列各属性只在半径模式下起作用。
EndRadius 结束半径
EndRadiusVar 结束半径变化范围,即结束半径值的范围在 (EndRadius – EndRadiusVar) 和 (EndRadius + EndRadiusVar )之间,下面类似。
RotatePerSecond 粒子每秒围绕起始点的旋转角度
RotatePerSecondVar 粒子每秒围绕起始点的旋转角度变化范围
StartRadius 初始半径
StartRadius 初始半径变化范围
重力模式:顾名思义,重力模式模拟重力,可让粒子围绕一个中心点移近或移远,它的优点是非常动态,而且移动有规则。下列各属性只在重力模式下起作用。
GravityX 重力X
GravityY 重力Y
RadiaAccel 粒子径向加速度,即平行于重力方向的加速度
RadiaAccelVar 粒子径向加速度变化范围
Speed 速度
SpeedVar 速度变化范围
TangentialAccel 粒子切向加速度,即垂直于重力方向的加速度
TangentialAccelVar 粒子切向加速度变化范围
生命属性:
Life 粒子生命,即粒子的生存时间�0�2
LifeVar 粒子生命变化范围
大小属性:
EndSize 粒子结束时的大小,-1表示和初始大小一致
EndSize 粒子结束大小的变化范围
StartSize 粒子的初始大小
StartSize 粒子初始大小的变化范围
角度属性:
Angle 粒子角度
AngleVar 粒子角度变化范围
颜色属性:
EndColor 粒子结束颜色
EndColorVar 粒子结束颜色变化范围
StartColor 粒子初始颜色
StartColorVar 粒子初始颜色变化范围
如果你不想编辑出五颜六色的粒子效果,那应该把EndColorVar,StartColorVar尽量设置为(0, 0, 0, 0)。
位置属性:
PositionType 粒子位置类型,有自由模式(Free)、相对模式(Relative)和打组模式(Grouped)三种
PosVarX 发射器位置的横向变化范围,烟花出现在位置相对中心位置的像素偏移�0�2
PosVarY 发射器位置的纵向变化范围
SourcePositionX 发射器原始X坐标位置
SourcePositionY 发射器原始Y坐标位置
Free自由模式,相对于屏幕自由,不会随粒子节点移动而移动(可产生火焰、蒸汽等效果);Relative相对模式,相对于被绑定的Node静止,粒子发射器会随Node移动而移动,可用于制作移动角色身上的特效等等;Grouped打组模式是相对于发射点的,粒子随发射器移动而移动。
自旋属性:
EndSpin 粒子结束自旋角度
EndSpinVar 粒子结束自旋角度变化范围
StartSpin 粒子开始自旋角度
StartSpinVar 粒子开始自旋角度变化范围
纹理渲染属性:
DestBlendFunc 目的纹理的混合模式
SrcBlendFunc 源纹理的混合模式
TextureImageData 纹理数据
TexturePath 纹理路径,目前只可为Debug.win32目录下文件名
Cocos2dx使用OpenGL混合原理对图形进行渲染绘制。混合就是指把两种颜色混在一起,具体一点就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。它是一种常用的技巧,通常可以用来实现半透明,你也可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。
这里的源纹理和目标纹理跟绘制的顺序有关,先绘制的纹理是目标纹理,后绘制的纹理理所应当的就成为了源纹理。下面具体来看看混合模式的属性值。
DestBlendFunc和SrcBlendFunc的常用值为以下几种情况:
GL_ZERO: 表示使用0.0作为因子,实际上相当于不使用这种颜色参与混合运算。
GL_ONE: 表示使用1.0作为因子,实际上相当于完全的使用了这种颜色参与混合运算。
GL_SRC_ALPHA:表示使用源颜色的alpha值来作为因子。
GL_DST_ALPHA:表示使用目标颜色的alpha值来作为因子。
GL_ONE_MINUS_SRC_ALPHA:表示用1.0减去源颜色的alpha值来作为因子。
GL_ONE_MINUS_DST_ALPHA:表示用1.0减去目标颜色的alpha值来作为因子。
最常用的组合模式有两种:GL_ONE和GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA和GL_SRC_ALPHA。
介绍完编辑器的各属性项以后,我们就可以根据需要编辑出不同效果的粒子效果了。下图是类似天天爱消除游戏中的“雪花”粒子特效。
资源图片 ,在使用粒子编辑器编辑粒子时,应放在粒子编辑器的ParticleEditor目录下;导出plist文件时,应把资源图片和plist文件放一起。该资源下载地址:https://github.com/renshan/btnTest/tree/master/snow-plist
注意:这里目的纹理的混合模式设置为GL_ONE,源纹理的混合模式设置为GL_ONE_MINUS_SRC_ALPHA。
cocos2dx中加载使用plist文件
只要编辑出粒子效果,那在cocos2d-x引擎中加载plist文件就非常简单了。使用以下代码来读取粒子效果:
//贴背景图片
Sprite* pSprite = Sprite::create("IMG1.jpg");
pSprite->setPosition(Point(-20 , 0));
pSprite->setAnchorPoint(Point(0, 0));
this->addChild(pSprite, 0);
//读取粒子效果
ParticleSystem* m_emitter1 = ParticleSystemQuad::create("snow.plist");
m_emitter1->retain();
ParticleBatchNode *batch = ParticleBatchNode::createWithTexture(m_emitter1->getTexture());
batch->addChild(m_emitter1);
addChild(batch, 10);
m_emitter1->release();
//或读取粒子效果
//ParticleSystem* m_emitter1 = ParticleSystemQuad::create("snow.plist");
//addChild(m_emitter1);
这里ParticleBatchNode可以引用且只可以引用1个texture(一个图片文件,一个texture图集),增加到SpriteBatchNode中的ParticleSystem都是在OpenGL ES调用绘图函数时绘制的。
如果ParticleSystem没有增加到ParticleBatchNode中,OpenGL ES会调用每个粒子系统的绘图函数,这样做效率会比较低。
好了,基本上就这些,比想象中简单多了
Ⅷ cocos2dx场景黑边我使用的Sprite作为Layer的背景,我设置sprite的位置为Layer的中心点,
Size VisibleSize = Director::getInstance()->getVisibleSize();
Vec2 VisibleOrigin = Director::getInstance()->getVisibleOrigin();
//BackGround 1
_BackGround_1 = Sprite::create("background.jpg");
float ScaleTimes = VisibleSize.height / _BackGround_1->getContentSize().height;//计算缩放倍数
_BackGround_1->setScale(ScaleTimes);