(1)异步加载图片资源
当游戏中需要使用的纹理图过多时,如果在进入界面加载,会导致界面长时间处于等待状态,影响体验。所以最好的情况就是设置一个加载界面,异步加载图片资源,主要API如下所示。
<span >auto texture=Director::getInstance()->getTextureCache();texture->addImageAsync(const std::string &filepath,const std::function<voID(Texture2D*)>& callback);</span>
(2)异步加载3D模型
3D模型如obj等的加载也是需要大量的时间的,所以此处也是采用相同的策略,异步加载。主要API如下所示。
<span >Sprite3D::createAsync(const std::string &modelPath,const std::function<voID(Sprite3D*,voID*)>& callback,voID* callbackparam);Sprite3D::createAsync(path,CC_CALLBACK_2(LoadingLayer::printf,this),(voID*)i++);<span > </span>//项目实际使用方法</span>(3)获得触摸对象
在游戏中,我们经常需要获得点击点处的节点对象,然后对其进行相应的 *** 作,主要使用的是Event类和touch类。主要API如下所示。
<span >auto target=static_cast<Sprite*>(event->getCurrentTarget()); <span > </span>//获得触摸对象Point location=target->convertToNodeSpace(target->getLocation()); <span > </span>//获得精灵位置</span>
注:touch类常用的方法有:
<span >/** Returns the current touch location in OpenGL coordinates. * * @return The current touch location in OpenGL coordinates. */ Vec2 getLocation() const;</span>
<span >/** Returns the delta of 2 current touches locations in screen coordinates. * * @return The delta of 2 current touches locations in screen coordinates. */ Vec2 getDelta() const;</span>(4)角度与弧度的相互转化
在进行sin、tan等的函数运算中,参数常常为弧度,所以常常需要进行弧度与角度的转化,所幸的Cocos2d-x引擎提供了相关的API,具体API如下所示。
<span >、/** @def CC_degrees_TO_radians converts degrees to radians */#define CC_degrees_TO_radians(__ANGLE__) ((__ANGLE__) * 0.01745329252f) // PI / 180/** @def CC_radians_TO_degrees converts radians to degrees */#define CC_radians_TO_degrees(__ANGLE__) ((__ANGLE__) * 57.29577951f) // PI * 180</span>
(5)BillBoard类的使用
BillBoard类主要用于实现3D场景的公告板功能,所谓的公告板,即始终朝向相机所在点,或始终朝向相机局部坐标系的XoY平面的2D精灵。具体API如下所示。
<span >BillBoard *board=BillBoard::create();board->addChild("精灵即可");board->setCameraMask((unsigned short)CameraFlag::USER1);</span>
在3D场景中,一般都需要添加环境光,具体API如下所示。
<span >/** * Creates a ambIEnt light. * @param color The light's color. * * @return The new ambIEnt light. */ static AmbIEntlight* create(const color3B &color);</span></span>
<span ><span >voID setlightFlag(lightFlag flag) { _lightFlag = flag;</span>
(7)定位光的使用
定位光在3D场景中起到至关重要的作用,下面是定位光中的主要方法。具体API如下所示。
<span ><span >/** * Creates a direction light. * @param direction The light's direction * @param color The light's color. * * @return The new direction light. */ static Directionlight* create(const Vec3 &direction,const color3B &color);</span></span>
<span ></pre><pre name="code" ><span ><pre name="code" >/** * Sets the Direction in parent. * * @param dir The Direction in parent. */ voID setDirection(const Vec3 &dir);</span></span>
(8)ControlPotentiometer类(圆盘拖拉条)的使用
这个控件有很多用处,可以让用户更改某些参数,在项目中,我们是当做当前英雄的血量。具体API如下所示。
<span ><span >/** * Creates potentiometer with a track filename and a progress filename.//背景图、周边图、中间旋转按钮图 */ static ControlPotentiometer* create(const char* backgroundfile,const char* progressfile,const char* thumbfile);</span></span>
<span ><span ><pre name="code" >m_potentiometer->setMinimumValue(float minimumValue);m_potentiometer->setMaximumValue(float maximumValue);m_potentiometer->addTargetWithActionForControlEvents(Ref* target,Handler action,EventType controlEvents); //添加监听</span></span>
(9)MotionStreak拖尾类的使用
Cocos2d-x引擎自带的拖尾功能很是方便,如果要是用户自己实现拖尾效果,将是很大的代码量。这个类主要用于实现滑动屏幕时,设定一条拖尾条带。具体API如下所示。
<span ><span >/** Creates and initializes a motion streak with fade in seconds,minimum segments,stroke's wIDth,color,texture filename. * * @param fade The fade time,in seconds.<span > </span>//1-消隐动画时长 2-拖尾条带相邻节点的最小距离 * @param minSeg The minimum segments.<span > </span>//3-拖尾条带的宽度 4-颜色 5-纹理路径 * @param stroke The wIDth of stroke. * @param color The color of stroke. * @param path The texture file name of stoke. * @return An autoreleased MotionStreak object. */ static MotionStreak* create(float fade,float minSeg,float stroke,const color3B& color,const std::string& path);</span></span>
<span ><span >m_streak->setBlendFunc(BlendFunc::ADDITIVE);<span > </span>//设置混合</span></span>
(10)RemoveSelf类的使用
这个类继承于CCActionInstant类,同级别的类还有CCShow、CCHIDe、CCFlipX等,所以是没有中间过程直接调用的动作。此动作主要用于在一连串动作执行完毕后,销毁自身。具体API如下所示。
<span ><span >/** Create the action. * * @param isNeedCleanUp Is need to clean up,the default value is true. * @return An autoreleased RemoveSelf object. */ static RemoveSelf * create(bool isNeedCleanUp = true);</span></span>项目暂时就总结到这里,以后有更深度的理解或者更广度的知识跨度,在进行补充。 总结
以上是内存溢出为你收集整理的cocos2d-x游戏项目总结全部内容,希望文章能够帮你解决cocos2d-x游戏项目总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)