一个比较常用的抽奖转盘效果,代码如下:

local totalCount = 6 -- 转盘总奖项数

local roundCountMin = 5 -- 转动最小圈数

local roundCountMax = 8 -- 转动最大圈数

local singleAngle = 360 / totalCount -- 所有奖项概率相同时 这样计算每个奖项占的角度 如果概率不同,可以使用table数组来处理

local offsetAngle = 5 -- 为了避免不必要的麻烦,在接近2个奖项的交界处,左右偏移n角度的位置,统统不停留 否则停在交界线上,很难解释清楚 这个值必须小于最小奖项所占角度的1/2

-- 设置随机数种子 正常情况下这应该在初始化时做 而不是在调用函数时

math.randomseed(os.time())

-- 默认随机奖项

if stopId == nil or stopId > totalCount then

stopId = math.random(totalCount) -- 产生1-totalCount之间的整数

end

-- 转盘停止位置的最小角度 不同概率时,直接把之前的项相加即可

local angleMin = (stopId-1) * singleAngle

-- 转盘转动圈数 目前随机 正常情况下可加入力量元素 根据 移动距离*参数 计算转动圈数

local roundCount = math.random(roundCountMin, roundCountMax) -- 产生roundCountMin-roundCountMax之间的整数

-- 检查一下跳过角度是否合法 当前奖项角度-2*跳过角度 结果必须>0 TODO

-- 转动角度

local angleTotal = 360*roundCount + angleMin + math.random(offsetAngle, singleAngle-offsetAngle) -- 避免掉offsetAngle角度的停留,防止停留在交界线上

-- 打印数据

print('stopId:'..stopId)

print('angleMin:'..angleMin)

print('roundCount:'..roundCount)

print('angleTotal:'..angleTotal)

-- 查找转盘

local rootLayer = self.rootLayer:getChildByName('TestLayer')

local sprRound = rootLayer:getChildByName('Panel_4'):getChildByName('ROUND_BG')

-- 复位转盘

sprRound:setRotation(0)

-- 开始旋转动作 使用EaseExponentialOut(迅速加速,然后慢慢减速)

sprRound:runAction(cc.EaseExponentialOut:create(cc.RotateBy:create(3.0, angleTotal)))

效果图

cocos2dx 圆盘抽奖_【cocos2dx 3.3 lua】06 抽奖转盘效果相关推荐

  1. python重复抽奖_用Python实现简单的抽奖程序

    抽奖基本需求 1.假设中奖概率为:获得 a道具 10% b道具 20% c道具 30% d道具 40% 2.基本的想法是:生成1-100的连续数组,随机生成一个整数,如果是1-10 则中a.10-30 ...

  2. cocos2dx java 乱码_[cocos2d-x] --- 完美解决中文乱码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一 介绍 最近由于各种各样的原因,好长时间没有学习cocos2d-x了.突然有种害怕的感觉,这样下去,以前学的关于cocos2d-x的一点皮毛会彻底忘记的 ...

  3. java 9宫格抽奖_前端js实现九宫格模式抽奖(多宫格抽奖)

    介绍: 前端九宫格是一种常见的抽奖方式,js实现如下,掌握其原理,不论多少宫格,都可以轻松应对.(代码可复制直接运行看效果). 该案例以四宫格入门,可扩展多宫格,奖品模块的布局可自由设置. 四宫格抽奖 ...

  4. python 公司年会抽奖_用Python做个年会抽奖小程序吧

    又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...

  5. php mysql 抽奖_使用jQuery+PHP+Mysql实现抽奖程序

    HTML 上述代码中,我们需要一个#roll用来显示滚动号码,#mid是用来记录抽中的号码id,然后就是需要两个按钮分别用来"开始"和"停止"动作,最后还需要一 ...

  6. python 公司年会抽奖_用Python写公司年会抽奖程序!中不中还不是我说了算!

    题目:某公司假设有300名员工,开年会抽奖,奖项如下: 一等奖3名:泰国5日游 二等奖6名:Iphone手机 三等奖30名:小型空气净化剂一盒 抽奖规则: 1.共抽三次,第一次抽三等奖,第二次抽二等奖 ...

  7. win7系统cocos2dx 3.4 绑定自定义类到Lua

    Cocos2d-x 3.0开始使用bindings-generator来生成c++类的lua绑定.bindings-generator基于tolua++,通过配置tools/tolua中的ini文件以 ...

  8. 【Cocos2d-x】视线和光线:如何创建 2D 视觉范围效果

    [Cocos2d-x]视线和光线:如何创建 2D 视觉范围效果 云里来.雾里去2014-10-20 12:10:383557 次阅读 Android客户端下载:sight_and_light-debu ...

  9. java小项目 幸运大抽奖_[Java教程]幸运大抽奖

    [Java教程]幸运大抽奖 0 2014-03-30 19:00:09 幸运大抽奖全新来袭,现在普遍的抽奖活动都是由flash开发的,然而,今天向大家展示由js实现的抽奖.早在2012年的时候写过一篇 ...

最新文章

  1. 在dbca建库的时候报ORA-27125错误的解决方法
  2. Writing your first Django app--Django 第一步
  3. 忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目
  4. redis笔记_源码_双端链表list
  5. Parameter '**' not found. Available parameters are [0, 1, param1, param2]解决办法
  6. ADO 连接数据库的几种方式
  7. sqlrowset 转化为json_逆向学习 fastjson 反序列化始末
  8. html怎么添加遮罩层,如何在浏览器窗口上添加一个遮罩层
  9. 微信小程序中使用setData修改变量数组或对象中的参数方法
  10. 谷歌应用商店开发者注册
  11. C语言 数组排序 – 冒泡排序
  12. 使用antd-design-vue配合vue框架搭建项目使用组件显示英文的解决办法
  13. 服务器U盘安装安装centos
  14. 移植ethtool至ARM板
  15. Transform.Forward和Vector3.Forward的正确使用方法
  16. 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期
  17. HTML5 Canvas编写五彩连珠(1):预览
  18. 密码 计算安全性 可证明安全性 无条件安全性
  19. Excel中VBA编程学习笔记(一)
  20. 您推荐哪些Excel VBA书籍

热门文章

  1. python123第七周小测验_python+request+untitest的接口自动化测试
  2. curl -s http://192.168.232.191/openapi/v2 | jq 不显示JSON格式的文档说明
  3. Python批量复制文件
  4. python oop求三角形面积公式_Python OOP --action()函数
  5. mysql csv 表头_Mysql实例mysql 导出CSV文件 并带表头的方法
  6. 列表解析python_Python 列表解析
  7. java兔子问题 递归_兔子问题 —— 递归的应用
  8. 启动修复黑屏服务器,使用光标修复Windows 10黑屏
  9. php计算1992年到现在,1992年以前 | 物质计算科学研究室 - Powered by MYPHP
  10. 解决statsmodels报错ValueError: Pandas data cast to numpy dtype of object.