如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3

Posted

技术标签:

【中文标题】如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3【英文标题】:How to create an If statement to check in an array for certain objects. Flash CS5 ActionScript 3 【发布时间】:2013-11-22 17:59:33 【问题描述】:

我目前正在数字化一个朋友和我自己设计的纸牌游戏,但是我在一些基本的编码方面遇到了麻烦。到目前为止我所拥有的是代码将填充一个“甲板”(数组),然后将其随机化,然后将 4 张四张牌放入一个“手”(数组)中,然后它当前将 4 个数组条目的动画剪辑加载到舞台上的某个 co-纵坐标。

因为我很快会在舞台上用完空间,所以我想做的是为每种卡片类型设置定义的位置(目前它们只是按照绘制的顺序加载)

我正在努力解决的问题是让代码 1) 执行检查数组是否至少包含任何一张卡片,然后将所述卡片加载到舞台上的坐标中,然后填充一个动态文本框以显示如何很多牌都在手上。

所以我对大多数更简单的函数非常有信心,但没有创建 If 语句来检查数组中的某些卡片(对象),以及如何计算有多少特定类型的重复对象在同一数组。

这是我目前拥有的,在此先感谢。

import flash.display.MovieClip;
stop();
//Create starting deck for player 1
var deck1 : Array = new Array(new attack(),new attack(),new attack(),new attack(),new attack(),new attack(),new ashe1(),new ashe1(),new flashss(),new ignitess());

//Create empty hand for player 1 and set up display variables
var hand1 : Array = [];
var attack1
var sa1
var sa2
var sa3
var sau
var ss1
var ss2

//Check player 1's deck
trace(deck1);

//Shuffle player 1's deck
function randomize1 (a : *, b : * ) : int 
    return ( Math.random() >.5 ) ? 1 : -1;

trace(deck1.sort( randomize1 ) );

//Draw first four cards for player 1
var drawcard1:MovieClip = deck1.shift();
trace(deck1);
trace(drawcard1);
hand1.push(drawcard1);
trace(hand1);
drawcard1 = deck1.shift();
trace(deck1);
trace(drawcard1);
hand1.push(drawcard1);
trace(hand1);
drawcard1 = deck1.shift();
trace(deck1);
trace(drawcard1);
hand1.push(drawcard1);
trace(hand1);
drawcard1 = deck1.shift();
trace(deck1);
trace(drawcard1);
hand1.push(drawcard1);
trace(hand1);

//Show player 1's hand on screen
addChild(hand1[0]);
hand1[0].x = 0.00;
hand1[0].y = 600.00;
addChild(hand1[1]);
hand1[1].x = 186.85;
hand1[1].y = 600.00;
addChild(hand1[2]);
hand1[2].x = 373.70;
hand1[2].y = 600.00;
addChild(hand1[3]);
hand1[3].x = 560.55;
hand1[3].y = 600.00;

//Show remaining card count left in deck on screen
var deck1l = deck1.length ;
player1count.text = deck1l

【问题讨论】:

不清楚你在问什么。你知道如何用 for 循环遍历数组吗? 老实说,我不知道你刚才说了什么。我想要的是一个 if 语句或类似的语句,它说明如果数组中存在 Attck 对象或其他对象之一,则添加该对象的子对象。我只是不明白如何编码。我也在寻找一种计算数组中重复对象的方法。 你的套牌和手牌都是一个数组。如果您不确定 Array 或 for 循环是什么,最好退后一步了解如何迭代 Array。如果这样做,您将能够利用该知识遍历数组并计算给定卡片在套牌或手牌中的实例。 【参考方案1】:

为卡片创建一个类,然后为每种类型的卡片创建子类。

即,您将拥有类Card,它将包含卡片的所有常见属性。那么你可能有CombatCardActionCardPassiveCard等。

在绘图时,您可以使用简单有效的方法将它们定位在舞台上。像这样的:

每张卡片都有一个公共属性类型,它是一个 int。即,CombatCard 的类型为 2。

然后你会得到一个 Points 向量,其中包含每种卡片类型的位置,其中每个位置对应于每种卡片类型。所以向量中的第三个元素将具有放置战斗卡的坐标。

在起草时,您只需调用positionCard(card),它将读取其类型并将其添加到它所属的位置。

【讨论】:

以上是关于如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL 表获取的数组中的单个 IF 语句与多个 IF 语句 [关闭]

将所选行存储在JavaScript中的数组中

如何在javascript中执行if语句来检查JSON数组是不是为空?

如何在if条件语句中搜索char数组中的char

如何启用我的 html 页面以使用两个布尔字段值检查用户并使用“if”语句显示他们的数据?

如何根据另一个 var 检查数组的内容,通过 if 语句利用警报窗口?