如何在Flash中制作愤怒的小鸟评分类型“三颗星评级”?
Posted
技术标签:
【中文标题】如何在Flash中制作愤怒的小鸟评分类型“三颗星评级”?【英文标题】:How to make angry birds scoring type "three stars rating" in flash? 【发布时间】:2015-11-18 20:03:02 【问题描述】:我想制作一个评分系统,像愤怒的小鸟一样根据分数显示星星。
如果你得到:3 分 = 3 星,1-2 分 = 2 星,0 = 1 星
星星将是一个图像。 回答所有三个问题后,积分将保存。这些点将以星形的形式出现,如上所示。我非常需要这个。
【问题讨论】:
这很……模糊。我们需要更多信息。从这些问题开始:如何得分?每个问题都得一分吗?你打算如何点亮每颗星星?星星是短片还是图像? 【参考方案1】: 为一颗“亮”星和一个“暗”星创建图像; 将它们的实例放在舞台上,“亮”星与“暗”星重叠,但最初被隐藏; 保留一个包含对“点亮”实例图像的引用的数组,并显示一个与您的分数成正比的数字。下面是更通用的解决方案:
public class StarsScoring extends Sprite
[Embed(source = "path/To/DimImage.jpg")]
private var _dimStar: Class;
[Embed(source = "path/To/LitImage.jpg")]
private var _litStar: Class;
private const GAP: uint = 10;
private const GROUP_X: uint = 25;
private const GROUP_Y: uint = 25;
private var _litStars: Array = [];
private var _numStars: uint;
private function _buildScoringUI(): void
var litStar: Bitmap, dimStar: Bitmap, hOffset: Number = GROUP_X;
for (var i: int = 0; i < _numStars; i++)
litStar = (new _litStar()) as Bitmap;
dimStar = (new _dimStar()) as Bitmap;
litStar.x = dimStar.x = hOffset;
litStar.y = dimStar.y = GROUP_Y;
litStar.visible = false;
addChild(_dimStar);
addChild(_litStar);
_litStars.push(litStar);
hOffset += (litStar.bitmapData.width + GAP);
public function StarsScoring(numStars: uint = 3): void
_numStars = numStars;
_buildScoringUI();
public function updateScore(score: uint, total: uint): void
var percent: Number = (score / total);
var threshold: uint = Math.round(percent * _litStars.length);
for (var i: int = 0; i < _litStars.length; i++)
var litStar: Bitmap = (_litStars[i] as Bitmap);
litStar.visible = (i <= threshold);
这个课程的优点是你可以使用任意数量的星星,并且得分会自动适应。要使用它:
var stars : StarsScoring = new StarsScoring (3);
addChild (stars);
stars.updateScore (1,3); // Will "lit" first star image
从未测试/编译过此代码(有机会时会这样做),但即便如此,它也应该为您指明正确的方向。
【讨论】:
以上是关于如何在Flash中制作愤怒的小鸟评分类型“三颗星评级”?的主要内容,如果未能解决你的问题,请参考以下文章