export default class UILotteryPanel extends UI
{
@property(cc.Node) btn_start : cc.Node = null;
@property(cc.Node) btn_close : cc.Node = null;
@property(cc.Node) lotteryNode : cc.Node = null;
private isRun = false; //是否運(yùn)行
private isStop = false; //準(zhǔn)備停止
private isSub = false; //是否開始減速
private startAngle = 0; //初始轉(zhuǎn)盤差值
private curSpeed = 0;
private addSpeed = 800; //second/px
private addSpeedTime = 1; //加速時(shí)間
private subSpeedTime = 1; //減速時(shí)間
private runMinTime = 2; //轉(zhuǎn)盤最小運(yùn)行時(shí)間
//開啟轉(zhuǎn)盤
public StartLottery()
{
this.isRun = true;
}
//停止轉(zhuǎn)盤
public StopLottery(message)
{
let list = GameConfig.Instance.GetLotteryList(); //配置表
if(message.rewardId < 1 || message.rewardId > list.length)
{
console.error("抽獎(jiǎng)下標(biāo)越界");
return;
}
let info = list[message.rewardId-1]; //取配置
if(info == null)
{
console.error("抽獎(jiǎng)配表生效");
}
this.reawrdInfo = info;
this.endIdx = message.rewardId;
console.log( "結(jié)束 :"+ this.endIdx);
this.isStop = true;
}
//重置轉(zhuǎn)盤狀態(tài)
public ResetLottery()
{
this.curSpeed = 0;
this.isRun = false;
this.isStop = false;
this.isSub = false;
this.timer = 0;
this.endOffset = 0;
//動(dòng)畫狀態(tài)重置
this.tempRotation = 0;
}
private timer = 0; //計(jì)時(shí)器
private endIdx = 1; //結(jié)束點(diǎn)
private endOffset = 0; //結(jié)束點(diǎn)偏移
private middleOffset = 0; //與中心點(diǎn)偏移值 補(bǔ)間角度 (在規(guī)定時(shí)間內(nèi),使指針指向中心點(diǎn))
update(dt)
{
if(this.isRun)
{
if(this.isStop && this.timer >= this.runMinTime) //收到抽獎(jiǎng)通知 且 時(shí)間達(dá)到最小轉(zhuǎn)盤時(shí)間 開始找合適位置停下
{
if(this.endOffset == 0)
{
this.GetStopOffset();
}
let endAngle = ((this.endIdx * -45) + this.startAngle)%360;//找到目標(biāo)位置停下
if(endAngle == 0)
{
endAngle = -360;
}
//使用勻減速運(yùn)動(dòng)算出位移 剂跟,然后到達(dá)減速點(diǎn)開始減速 S = vt - (a * math.pow(t,2))/2
let endPoint = (this.lotteryNode.angle - this.endOffset) % 360;
//因?yàn)槭墙嵌仁沁f增的现拒,所以判斷界限這邊給剛進(jìn)入的點(diǎn)設(shè)置為30 而不是45朝墩,設(shè)置為45合冀,則可能出現(xiàn)指針剛好停在界限不遠(yuǎn)處
//若區(qū)間設(shè)置的太小窟却,當(dāng)速度值過(guò)快時(shí)刽酱,則可能出現(xiàn)無(wú)法找到區(qū)間臭蚁,多跑很多圈的情況
//console.log(endPoint);
// -100 -55
if(endPoint > endAngle && endPoint < endAngle + 45 && !this.isSub)
{
this.isSub = true;
console.error("當(dāng)前速度:" + this.curSpeed);
//正數(shù)表示
this.middleOffset = endPoint - (endAngle + 19); //-22.5 -0 -45 最終位置減去中點(diǎn)位置 結(jié)果若為正數(shù)那么未旋轉(zhuǎn)到位载城, 負(fù)數(shù)說(shuō)明旋轉(zhuǎn)過(guò)頭
console.error("middleOffset : " + this.middleOffset);
this.curSpeed += this.middleOffset; //速度加上偏移值
//console.log("開始減速 : " + this.lotteryNode.rotation);
}
if(this.isSub) //開始減速
{
this.curSpeed -= (this.addSpeed) * dt;
if(this.curSpeed<=0)
{
//轉(zhuǎn)盤完全停止 彈窗
//this.lotteryNode.angle -= this.middleOffset;
UIEventListener.Get(this.btn_start).SetAvailable(true);
//彈窗
this.ResetLottery();
let pop = LayoutMrg.Instance.GetLogicModule<LotteryPopModule>(LayoutName.S_LottertPopPanel);
if(pop)
{
pop.LoadUI(UIPath.S_LottertPopPanel,AssetType.eUIModule,()=>
{
pop.UpdatePanel(this.reawrdInfo);
if(this.reawrdInfo.type < 4) //金幣 鉆石 分紅刷新
{
console.error("刷新大廳界面展示");
//Player.Instance.playerInfo.diamond += this.reawrdInfo.rewardNum;
let main = LayoutMrg.Instance.GetLogicModule<MainModule>(LayoutName.S_MainPanel);
if(main && main.IsShow())
{
main.UpdateTopBar();
}
}
this.UpdateDouble();
})
}
return;
}
}
}
else
{
if(this.timer <= this.addSpeedTime) //加速階段
{
this.curSpeed += this.addSpeed * dt;
}
}
this.lotteryNode.angle -= this.curSpeed * dt;
this.lotteryNode.angle %= 360;
if(this.lotteryNode.angle == 0)
{
this.lotteryNode.angle = -360;
}
this.timer += dt;
}
}
}
Creator 轉(zhuǎn)盤組件實(shí)現(xiàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門斗躏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人昔脯,你說(shuō)我怎么就攤上這事啄糙。” “怎么了栅干?”我有些...
- 文/不壞的土叔 我叫張陵迈套,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碱鳞,道長(zhǎng)桑李,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任窿给,我火速辦了婚禮贵白,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘崩泡。我一直安慰自己禁荒,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布角撞。 她就那樣靜靜地躺著呛伴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谒所。 梳的紋絲不亂的頭發(fā)上热康,一...
- 那天,我揣著相機(jī)與錄音劣领,去河邊找鬼姐军。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奕锌。 我是一名探鬼主播著觉,決...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惊暴!你這毒婦竟也來(lái)了饼丘?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缴守,失蹤者是張志新(化名)和其女友劉穎葬毫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屡穗,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡贴捡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了村砂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烂斋。...
- 正文 年R本政府宣布帘瞭,位于F島的核電站,受9級(jí)特大地震影響蒿讥,放射性物質(zhì)發(fā)生泄漏蝶念。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一芋绸、第九天 我趴在偏房一處隱蔽的房頂上張望媒殉。 院中可真熱鬧,春花似錦摔敛、人聲如沸廷蓉。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桃犬。三九已至,卻和暖如春行楞,著一層夾襖步出監(jiān)牢的瞬間攒暇,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓池颈,卻偏偏與公主長(zhǎng)得像尾序,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躯砰,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 游戲中經(jīng)常會(huì)遇到需要顯示數(shù)字(比如金錢數(shù)量每币,戰(zhàn)斗力等等),美術(shù)UI同學(xué)會(huì)給圖片資源琢歇,然后我們程序同學(xué)得寫邏輯實(shí)現(xiàn)需...
- 一個(gè)通用幀動(dòng)畫組件:循環(huán)替換圖片李茫,代替Animation揭保。 基類: 子類繼承:間隔替換圖(也可以擴(kuò)展成,間隔顯示節(jié)點(diǎn)):
- 效果圖 ps: 效果圖來(lái)源于項(xiàng)目自帶測(cè)試場(chǎng)景 LongTouchTestScene.fire魄宏,可以下載項(xiàng)目下來(lái)直接...
- 先看看這個(gè)組件的滾動(dòng)效果: tip:最后那個(gè)button按鈕是為了看當(dāng)前有多少個(gè)示例TableCellNode秸侣。當(dāng)...
- 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒宠互。表情可以傳達(dá)很多信息味榛。高興了當(dāng)然就笑了,難過(guò)就哭了予跌。兩者是相互影響密不可...