这两天一直在整一个分数动态增加的效果,类似于开心消消乐结算时分数滴滴滴的累加效果,自行脑补啊。实现步骤主要是拿到开始时的分数和结束时的分数,取个差值,根据差值判断是加到结束时的分数还是减到结束时的分数。加减的分数就是结束分数乘以一个系数,系数则是0.016/2,这个自己调整,越小加的越快,0.016是跑一帧需要的时间。
然后在计时器中调用这个加减的过程就可以了。具体代码如下:
//用户成绩动态变化
runChangeUserScore: function ()
{
//开始时的分数
var tempScore = parseInt(this.Text_user_score.getString());
//结束时的分数
var endedScore = this.userScoreNum;
//console.log("runChangeUserScore tempScore " + tempScore + " this.userScoreNum " + this.userScoreNum);
//用户增加的成绩
var changedScore = endedScore - tempScore;
//分数增加的时间系数
var changeTime = 0.016 / 2;
if (changedScore != 0)
{
if (changedScore > 0)
{
if (endedScore == 0)
{
tempScore -= this.myNewScore * changeTime;
}
else
{
tempScore += endedScore * changeTime;
}
}
else if(changedScore < 0)
{
if (endedScore == 0)
{
tempScore -= this.myNewScore * changeTime;
}
else
{
tempScore -= Math.abs(endedScore) * changeTime;
}
}
if (endedScore < 0 && endedScore - tempScore >= 0)
{
tempScore = endedScore;
}
if (endedScore > 0 && tempScore - endedScore >= 0)
{
tempScore = endedScore;
}
this.Text_user_score.setString(tempScore.toString());
}
else
{
this.Text_user_score.setString(endedScore.toString());
console.log("unschedule runChangeUserScore ----------------------------end");
this.unschedule(this.runChangeUserScore);
}
},
调用的时候则是
//用户成绩刷新
this.userScoreNum = this.userScoreNum + (res.userWin - res.userLose);
this.myNewScore = parseInt(this.Text_user_score.getString());
this.schedule(this.runChangeUserScore);
这样基本上可以实现分数动态滴滴滴增加减少(包括负数)的过程,再配个适当的音效,效果会更好哦。