如何在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中制作愤怒的小鸟评分类型“三颗星评级”?的主要内容,如果未能解决你的问题,请参考以下文章

关卡选择视图 - 类似于愤怒的小鸟

U3D小游戏愤怒的小鸟地图选则界面和部分逻辑

U3D小游戏愤怒的小鸟地图选则界面和部分逻辑

U3D小游戏愤怒的小鸟地图选则界面和部分逻辑

如何在Flash中创建评分系统

看--愤怒的小鸟