首页 文章

动作脚本3 |在不同的动画片段中找到minium Number

提问于
浏览
0

我正在尝试为飞镖选手制作一个用户界面,其中多达8名玩家可以将他们的参赛作品放入桌面 . 我想用一个“闪烁的动画片段”或类似的东西突出显示真正的领导者 . 每个玩家都有自己的动画片段,意味着动态文本字段,用于计算结果 .

我的方式只在4名玩家开始游戏时才有效 .

addEventListener(KeyboardEvent.KEY_DOWN, showLeader);

function showLeader(evt: KeyboardEvent): void {

var a: Number = Number(player_1_content_mc.GESAMTPUNKTZAHL_TEXT.text);
var b: Number = Number(player_2_content_mc.GESAMTPUNKTZAHL_TEXT.text);
var c: Number = Number(player_3_content_mc.GESAMTPUNKTZAHL_TEXT.text);
var d: Number = Number(player_4_content_mc.GESAMTPUNKTZAHL_TEXT.text);

    if (a < d && c && b)
    player_1_content_mc.LEADER01_txt.text = "LEAD"

else

    player_1_content_mc.LEADER01_txt.text = ""

    if (b < d && c && a)
    player_2_content_mc.LEADER01_txt.text = "LEAD"

else

    player_2_content_mc.LEADER01_txt.text = ""

}

任何人都可以帮助我理解为什么它不起作用?

2 回答

  • 0

    这里的实现适用于任意数量的玩家 . 首先,您必须将所有播放器影片剪辑添加到列表中,然后您可以使用最少的点数评估播放器:

    function showLeader(evt: KeyboardEvent):void 
    {
        // create a list of all leaderboard movies.
        var movies : Vector.<MovieClip> = new Vector.<MovieClip>();
    
        movies.push(player_1_content_mc);
        movies.push(player_2_content_mc);
        movies.push(player_3_content_mc);
        movies.push(player_4_content_mc);
    
        // get minimum number of points
        var minNumber : Number = Number.MAX_VALUE;
    
        for each (var movie : MovieClip in movies)
        {
            var points : Number = Number(movie.GESAMTPUNKTZAHL_TEXT.text);
    
            if (points < minNumber) 
            {
                minNumber = points;
            }
        }
    
        // mark all players which have the minimum number of points
        // note: there can be more than one player with minimum number of points.
        for each (var movie : MovieClip in movies)
        {
            var points : Number = Number(movie.GESAMTPUNKTZAHL_TEXT.text);
    
            if (points == minNumber) 
            {
                // set text that this player is leader
                movie.LEADER01_txt.text = "LEAD";
            }
            else 
            {
                // clear textbox if player was previously lead
                movie.LEADER01_txt.text = "";
            }
        }
    }
    
  • 0

    我相信,你的问题与比较球员得分时所采用的逻辑但无法操作的快捷方式有关

    if (a < d && c && b)
    

    执行此操作的传统方法是这样的:

    if (a < d && a < c && a < b)
    

    它就这么简单!

    但是,如果你最终添加超过4个玩家,这种方法就会变得很累 . 我建议将所有玩家添加到阵列中并循环测试玩家的分数 .

相关问题