基于cocos2dx的伪立体菜单,cocos2dx RotateMenu说明

  次阅读 作者:智能小宝 来源:互联网 2015-09-28 15:12 我要评论(0)

基于cocos2dx的伪立体菜单,cocos2dx

RotateMenu说明

最终效果图

下面这个引用自乱斗西游

设计说明

1.菜单项(MenuItem)平均分布在椭圆(类似)上

2.椭圆长轴为2/3width,短轴为2/8 height

3.最前面的菜单项Scale=1,opacity=255,最后面Scale=0.5,opacity=129.其它位置根据三角函数变换(updatePosition中实现)

4.默认最前面菜单被选中(selected)

5.单位角度(unitAngle)是2*PI/菜单项的数量

6.滑动一个width,菜单旋转两个单位角度

7.Touch结束会自动调整位置,保证最前面位置有菜单项

8.滑动超过1/3单位角度会向前舍入

9.移动小于1/6单位角度会判定点击菜单

10.默认菜单大小不是全屏,而是屏幕的2/3,通过Node::setContentSize()设置

使用

使用这个菜单只要知道两个函数

1.构造函数

RotateMenu::create()(由CREATE_FUNC创建)

2.添加MenuItem

void addMenuItem(cocos2d::MenuItem *item);

其它函数可以看代码

相关参数的函数设置还未添加

代码

声明

#ifndef __ROTA__TE_MENU_H__

#define __ROTA__TE_MENU_H__

#include "cocos2d.h"

/*

*模仿乱斗西游主界面的旋转菜单

*/

class RotateMenu :public cocos2d::Layer{

public:

//构造方法

CREATE_FUNC(RotateMenu);

//添加菜单项

void addMenuItem(cocos2d::MenuItem *item);

//更新位置

void updatePosition();

//更新位置,有动画

void updatePositionWithAnimation();

//位置矫正修改角度 forward为移动方向当超过1/3,进1

//true 为正向false 负

void rectify(bool forward);

//初始化

virtual bool init();

//重置操作有旋转角度设为0

void reset();

private:

//设置角度 弧度

void setAngle(float angle);

float getAngle();

//设置单位角度 弧度

void setUnitAngle(float angle);

float getUnitAngle();

//滑动距离转换角度,转换策略为移动半个Menu.width等于_unitAngle

float disToAngle(float dis);

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...