クラス名に特定の単語を含む特定のオブジェクトのみを配列に許可する方法を見つけたいと思います。または、少なくともこのようなことを行う最適な方法を見つけてください。詳細はこちら。カートにドロップされたすべてのオブジェクトを格納する配列があります。
function addProductToArray (e:MouseEvent):void{
currMC = (e.target as MovieClip);
myCart.itemsInCart.push(currMC);
trace(myCart.itemsInCart);}
たとえば、[オブジェクト BreadGrain] と [オブジェクト PastaGrain] をドロップするとします。
trace(myCart.itemsInCart);// would trace [object BreadGrain],[object PastaGrain]
.
簡単、問題ありません。しかし、Classname に "Grain" を含む 2 つのオブジェクトのみを配列に入れたい場合はどうすればよいでしょうか? ユーザーが「カート」に各タイプの食品を 2 つだけドロップできるように、これを行いたいと考えています。食品の種類は、穀物、果物、野菜、肉などです。クラス名の末尾に食品の種類を追加しました。これを使用して、それがどの種類の食品であるかを検出し、追加されないようにすることができれば幸いです。制限を超え、エラーを表示します。つまり、「あなたはすでに 2 つの穀物製品を持っています」。
それが理にかなっていることを願っています。とにかく、私はそれがある程度うまくいくことを発見しました:
if (currMC is BreadGrain) {
myCart.itemsInCart.push(currMC);
} else {
// error message code here
}
しかし、私はいくつかの製品を持っており、それらすべてに対して if/else または switch ステートメントを記述する必要はありません。私はこれを次のようなもので動的に行うことを望んでいました:
//this is an example of the logic
if (currMC classNameContainsTheWord "Grain" AND myCart.itemsInCart DoesNotContainMoreThan 2 Grain Objects) {
myCart.itemsInCart.push(currMC); } else { // ここにエラー メッセージ コード }
私は困惑しています。「おい、あなたはこれをすべて間違っている」だけでも役に立ちます。ありがとう。