cc.Class({
extends: cc.Component,
properties: {
spinBtn: {
default: null, // The default value will be used only when the component attachin // to a node for the first time
type: cc.Button, // optional, default is typeof default
visible: true, // optional, default is true
displayName: 'SpinBtn', // optional
},
wheelSp: {
default: null,
type: cc.Sprite
},
maxSpeed: {
default: 3,
type: cc.Float,
max: 10,
min: 2,
},
duration: {
default: 3,
type: cc.Float,
max: 5,
min: 1,
tooltip: "减速前旋转时间"
},
acc: {
default: 0.1,
type: cc.Float,
max: 0.2,
min: 0.01,
tooltip: "加速度"
},
targetID: {
default: 0,
type: cc.Integer,
max: 17,
min: 0,
tooltip: "指定结束时的齿轮"
},
springback: {
default: false,
tooltip: "旋转结束是否回弹"
}
// ,
// effectAudio:{
// default:null,
// url:cc.AudioClip
// }
},
// use this for initialization
onLoad: function () {
cc.log("....onload");
this.wheelState = 0;
this.curSpeed = 0;
this.spinTime = 0; //减速前旋转时间
this.gearNum = 10;
this.defaultAngle = 360 / 18 / 2; //修正默认角度
this.gearAngle = 360 / this.gearNum; //每个齿轮的角度
this.wheelSp.node.rotation = this.defaultAngle;
this.finalAngle = 0; //最终结果指定的角度
this.effectFlag = 0; //用于音效播放
this.oldTarg = 0;
this.data = [
5, 45, 5, 5, 30, 10, 20, 5, 10, 5
];
this.updataLotterTime();
var self = this;
this.spinBtn.node.on(cc.Node.EventType.TOUCH_END, function (event) {
if (this.wheelState !== 0) {
return;
}
if (window.userMgr.getLotteryTime() <= 0) {
window.UIMgr.popAlertOk('今天次数已使用完', 2, null);
} else {
if (!window.gameMgr.getShareEnable()) {
window.UIMgr.popAlertOk('暂无视频', 2, null);
}else{
if(window.gameMgr.getShowVideoOver()){
window.wxApi.showVideo(function () {
// window.userMgr.setLotteryTime(1);
// this.updataLotterTime();
// window.userMgr.setLotteryTime(window.userMgr.getLotteryTime() - 1);
self.begin();
}.bind(this), null);
}
else{
window.gameMgr.setOnHideType(1);
window.wxApi.wxShare(0,0,{invitor: window.userMgr.getUUid()});
self.begin();
}
}
}
}.bind(this));
},
// popTip(){
// let self = this;
// window.UIMgr.popAlert('观看视频获得抽奖次数', 2, '看视频抽奖', function () {
// if (!window.gameMgr.getShareEnable()) {
// window.UIMgr.popAlertOk('暂无视频', 2, null);
// } else {
// }
// }.bind(this), null);
// }
// ,
begin() {
window.userMgr.setLotteryTime(window.userMgr.getLotteryTime() - 1);
cc.log("begin spin---抽奖次数" + window.userMgr.getLotteryTime());
this.updataLotterTime();
while (true) {
var lotteryIndex = (window.gameMgr.getLotteryIndex() + this.oldTarg) % 10;
if (this.data[lotteryIndex] != 45) {
this.targetID = lotteryIndex;
break;
}
}
this.oldTarg = this.targetID;
this.decAngle = 2 * 360; // 减速旋转两圈
this.wheelState = 1;
this.curSpeed = 0;
this.spinTime = 0;
// var act = cc.rotateTo(10, 360*10);
// this.wheelSp.node.runAction(act.easing(cc.easeSineInOut()));
}
,
updataLotterTime() {
this.node.getChildByName('timeLable').getChildByName('time').getComponent(cc.Label).string = window.userMgr.getLotteryTime();
},
start: function () {
// cc.log('....start');
},
caculateFinalAngle: function (targetID) {
this.finalAngle = 360 - this.targetID * this.gearAngle + this.defaultAngle;
// if(this.springback)
// {
// this.finalAngle += this.gearAngle;
// }
},
editBoxDidBegin: function (edit) {
},
editBoxDidChanged: function (text) {
},
editBoxDidEndEditing: function (edit) {
// var res = parseInt(edit.string);
// if(isNaN(res))
// {
// if(cc.sys.isBrowser)
// {
// alert('please input a number!');
// }else cc.log(".....invalid input");
// this.targetID = Math.round(Math.random()*(this.gearNum-1));
// return;
// }
// this.targetID = res;
},
// called every frame, uncomment this function to activate update callback
update: function (dt) {
if (this.wheelState === 0) {
return;
}
// cc.log('......update');
// cc.log('......state=%d',this.wheelState);
this.effectFlag += this.curSpeed;
if (!cc.sys.isBrowser && this.effectFlag >= this.gearAngle) {
if (this.audioID) {
// cc.audioEngine.pauseEffect(this.audioID);
}
// this.audioID = cc.audioEngine.playEffect(this.effectAudio,false);
// this.audioID = cc.audioEngine.playEffect(cc.url.raw('resources/Sound/game_turntable.mp3'));
this.effectFlag = 0;
}
if (this.wheelState == 1) {
cc.log('....加速,speed:' + this.curSpeed);
this.spinTime += dt;
this.wheelSp.node.rotation = this.wheelSp.node.rotation + this.curSpeed;
if (this.curSpeed <= this.maxSpeed) {
this.curSpeed += this.acc;
}
else {
if (this.spinTime < this.duration) {
return;
}
cc.log('....开始减速');
//设置目标角度
this.finalAngle = 360 - this.targetID * this.gearAngle + this.defaultAngle;
if(Math.abs(this.finalAngle - ((this.wheelSp.node.rotation + this.curSpeed) % 360)) > (this.maxSpeed + 10)){
this.wheelSp.node.rotation = this.wheelSp.node.rotation + this.curSpeed;
}
else{
this.maxSpeed = this.curSpeed;
// if(this.springback)
// {
// this.finalAngle += this.gearAngle;
// }
console.log('finalAngle----',this.finalAngle , this.wheelSp.node.rotation);
this.wheelSp.node.rotation = this.finalAngle;
this.wheelState = 2;
}
}
}
else if (this.wheelState == 2) {
cc.log('......减速');
var curRo = this.wheelSp.node.rotation; //应该等于finalAngle
var hadRo = curRo - this.finalAngle;
t
yxkfw
- 粉丝: 82
- 资源: 2万+
最新资源
- 流水线贴膜机完成项目程序,包含PLC程序和触摸屏程序,程序内 包含上下气缸控制,夹紧气缸控制,输送带电机控制,贴膜伺服控制,旋转电机控制等类容,非常适合学习简单控制工艺及运动控制初学者学习,该程序支持
- PLC与变频器RS指令无协议通讯 适应支持MODBUS.RTU模式的各品牌变频器 RS485ADP或者RS485BD板都可以 本程序编写了CRC循环冗余校验码程序,针对FX1N.2N没有CRC专
- 自己封装的爱普生机器人与三菱的MC协议通信驱动程序,提供项目源码、MC协议源码,需要一定基础(通信 MC协议 爱普生机器人编程)才能调的通
- 紧急道,紧急避障,横纵向联合控制,模型预测控制+pid控制方案,通过控制转角以及车轮力矩实现道,避障轨迹 matlab用的是2016,carsim用的是2018
- 基于plc智能停车场车位控制仿真 功能介绍: ①假设某停车场共有16个车位 ②在停车场入口处装设有一传感器,用来检测车辆进入的数目 ③在停车场出口处装设有一传感器,用来检测车辆出去的数目 ④尚有
- 能量和储备调度的分布鲁棒联合机会约束 测试环境:MATLAB 关键词:分布式鲁棒优化,能量和储备调度,联合机会约束 我们开发了一个两阶段的随机计划,为能源和储备调度的联合电力和天然气系统的高渗透的可再
- 插电式混合动力汽车的能量管理:模型预测控制的凸优化算法 测试环境:MATLAB 关键词:乘法器交替方向法、能量管理、内点法、模型预测控制、插电式混合动力汽车 求解非线性损耗混合动力汽车能量管理模型预测
- 储能参与调频调峰联合优化运行 关键词:储能 调频 调峰 储能优化 联合优化 测试环境:matlab平台 通过一个联合优化框架同时使用电池存储系统进行调峰和频率调节,该框架可以捕捉到电池 化、操作限
- 基于最小二乘法和快速解耦法的电网状态估计 测试环境:MATLAB 电网状态估计问题的实质是当方程的个数大于变量的个数时,对方程变量进行无偏估计 对于电网系统,变量为节点电压(即状态值,由实部和虚部
- 四轮轮毂电机驱动车辆,驱动电机故障状态估计(UKF) 软件使用:Matlab Simulink 适用场景:采用无迹卡尔曼滤波UKF进行轮毂电机状态估计,失效电机估计状态为0,正常电机状态为1 产品
- 汇川H3UCAN总线高性能PLC实机程序,本体应用五轴?CAN总线轴控两轴SV630总线伺服电机,最大可扩充16轴运动总线 另外一路MODBUS总线控制高频温控器 配合台湾威纶通TK6071IP触
- 倒立摆源码 13年国赛电赛旋转倒立摆 完整全功能 程序 倒立摆 pid算法 程序使用时可根据硬件需要自行调节 基本要求 1. 摆杆从处于自然下垂状态(摆角 0°)开始,驱动电机带动旋转臂作往复旋转使
- 成熟 步进电机驱动 方案 全套
- 考虑电动汽车调度潜力的两阶段充电桩市场投标 代码 测试环境:MATLAB 关键词:电动汽车,车并网,纳什均衡,投标策略 充电站投标优化能降低电力成本甚至通过电取益 考虑了电动汽车成为柔性储荷资源的
- 四相8 6极开关磁阻电机maxwell仿真资料
- labview串口,网口,DSC可用OPC通讯链接三菱欧姆龙西门子等PLC 需要的取,可帮助使用 通过NI-OPC控制三菱,欧姆龙西门子等各种型号PLC
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈