使用cocos2d-x模仿QQ欢乐斗地主手机版的界面控件

前段时间在做一款斗地主游戏,需要实现类似QQ欢乐斗地主主里面的效果。见下面效果图。

实现细节就不细说了,参见源码。大体就是将一个使用椭圆算法(参考《计算机图形学(第三版)》3.10)生成一个椭圆,在椭圆上每隔90度放置一个精灵。然后滑动的时候再计算每个精灵的新位置,并且根据与中心上的精灵的距离更新每个精灵的颜色、大小、层级等属性。

说说使用,这个在使用上也是比较简单的,如下所示。

bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("image.plist");

    m_pCircleGallery = CircleGallery::create(this, 4, 180, 50);
    m_pCircleGallery->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2));
    addChild(m_pCircleGallery);

    return true;
}

Sprite* HelloWorld::galleryItemAtIndex(CircleGallery *gallery, const GalleryItem &item)
{
	char buffer[64];
	sprintf(buffer, item.state == GalleryDelegate::State::selected ? "item_%02d+.png" : "item_%02d.png", item.index + 1);
	auto sprite = gallery->getSpriteByIndex(item.index);
	if (!sprite)
	{
		sprite = Sprite::create();
	}
	sprite->setSpriteFrame(buffer);
	return sprite;
}

在CircleGallery创建的时候传入子项数量、x轴的半径和y轴的半径等。然后再galleryItemAtIndex函数里面根据参数GalleryItem(里面包含了当前项的索引及状态)来更新精灵,其它的就不用理会了,会自动更新大小、层级、颜色等信息。用法上跟CCTableView有点类似。

源码下载:http://pan.baidu.com/s/1o6l2Jk2

时间: 2024-10-13 11:43:00

使用cocos2d-x模仿QQ欢乐斗地主手机版的界面控件的相关文章

[android] 手机卫士自定义滚动控件

TextView控件设置单行显示 android:singleLine=”true” 设置TextView开始的位置显示省略号,android:ellipsize=”start” 设置滚动属性,android:ellipsize=”marquee” 当控件有焦点的时候,才会调用那个滚动效果 新建一个ui包 新建一个类FocusedTextView继承系统的TextView 重写构造方法 重写isFoused()方法,返回true,就可以让它生来就有焦点,其实并没有焦点,只是欺骗了android系

CAD二次开发控件,dwg控件,网页DWG控件,手机浏览编辑DWG控件

梦想绘图插件5.2(MxDraw5.2) 是国内最强,最专业的CAD开发插件(控件),不需要AutoCAD就能独立运行. 控件使用VC 2010开发,具有30万行代码规模,最早从2007年第一个版本完成,经过多年的累积已经非常稳定可靠,功能完善.有关键的空间搜索算法,并使用汇编优化,可以处理50万级实体,图形的显示和处理效率比同类产品高出很多. 梦想绘图3d插件6.0(MxDraw6.03d),使用二维控件的显示核心,基于 OpenCASCADE 几何造型引擎, 创建锥.柱.环等基本几何体, 对

qq欢乐斗地主 基址 C# 详解

仅供学习交流,误用于非法用途. 转载请标明出处. 相信有很多朋友在搜索斗地主"基址"的时候发现这个"基址"总是会变,这是为什么呢? 因为这个所谓的基址其实上是"GameLogic.dll"模块相对地址,而每次加载"GameLogic.dll"模块的时候,"GameLogic.dll"模块的加载地址都会改变,所以我们找到的这个"基址"会变得不固定,一直变动. 我想到了两个方法来解决这个问题

[android] 手机卫士自定义组合控件

设置中心 新建SettingActivity 设置GridView条目的点击事件 调用GridView对象的setOnItemClickListenner()方法,参数:OnItemClickListenner对象 匿名内部类实现,重写onItemClick()方法,传递进来的参数: parent是GridView对象,view是当前View对象,position是当前索引 switch判断,当时设置中心的索引时,跳转到设置中心 设置中心界面 使用相对布局,右边的<CheckBox/> 位于父

Android 手机卫士--自定义组合控件构件布局结构

由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. 自定义组合控件 1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象. 2.将组合控件的布局,抽取到单独的一个xml中 新建布局文件:setting_item_view.xml,将上篇文章中布局文件中的代码放进去 <?xml version=

javascript-- 基于jQuery的模仿移动端上拉加载更多控件

简单实现手机端上拉加载更多,通过触发trigger()事件,触发原先已经写好的请求 css样式 .more{ padding: 10px 10px; height:50px; background:#fff; background-clip:content-box; text-align: center; line-height:50px; font-family:"Microsoft Yahei"; display: none; } html代码 <div class=&quo

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站

新版一元云购源码 1元购网站 一元夺宝源码微信商城手机版建站,有10多年的技术团队开发定制,打造,需要定制,私聊我,谢谢. 全局功能:系统设置通过系统设置,可设置网页版.手机版.微信版.APP的基本信息,比如名称.Logo.文章.邮箱.短信.支付接口等.01全局功能:自定义界面系统目前已开源,支持自定义模版和标签文案修改,一个兼职程序员即可修改模版和任何文案,可高度化修改为站长想要的样子.02全局功能:SEO优化针对模版里的每个单页面,进行了全面的优化,从Sitemap.关键词.描述.图片ALT

模仿.Net ThreadPool的线程池控件

http://www.2ccc.com/btdown.asp?articleid=5953 ftp://download:[email protected]/vcl/system/20120301114502_ThreadPool.rar Delphi线程池控件说明:模仿.Net的ThreadPool类的功能.控件关键属性:  MaxThreadCount,MinThreadCount设置池中最大最小线程数量,默认为0,线程即用即释放.  ThreadWorkFinished在线程执行完任务后触

昨天晚上斗了几场地主,得到一门挑战赛冠军,喜得10000。开发欢乐斗地主游戏辅助神器

输光了3个QQ,两个微信账号.斗地主不如做程序快乐啊. 所以决定开发欢乐斗地主游戏辅助神器(辅助记牌) 该程序可以自动记牌,思路出下: 底牌:小王,红A,,黑3 赖子为4 地主已经出的牌10张(剩10):33,88,88,AA 战友已经出的牌2张(剩15):55,不要 我已经出的牌4张(剩13):66,QQ 未知的牌(25张,即地主和战友未出的牌): 33,444,55, 我未出的牌,是不用辅助显示的,游戏中已经有了. 有了欢乐斗地主游戏辅助神器,再也不会输了. 如果有其他人明牌,所有牌都可以计