我试图为飞镖选手制作一个用户界面,其中多达8名玩家可以将他们的参赛作品放入桌面。我想用一个"闪烁的movieclip"来强调真正的领导者。或类似的东西。每个玩家都有自己的动画片段,暗示一个动态文本字段,用于计算结果。
只有当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 = ""
}
任何人都可以帮助我理解它为什么不起作用吗?
答案 0 :(得分:0)
我认为,你的问题与你在比较玩家时所采用的逻辑但无法操作的快捷方式有关。分数
if (a < d && c && b)
这样做的传统方式是这样的:
if (a < d && a < c && a < b)
就这么简单!
但是,如果你最终添加了4个以上的玩家,这种方法就会变得很累。我建议将所有玩家添加到阵列中并循环测试玩家&#39;分数。
答案 1 :(得分: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 = "";
}
}
}