У меня есть несколько «предметов» (mc), содержащихся в прокручиваемом mc, которые можно перетаскивать на другие соответствующие mc.Имена элементов перечислены в массиве, и я хочу назначить переменные пригодности и обратную связь для каждого mc из массива.Я думаю, что это называется ассоциативный массив?
Возникли проблемы с правильной ссылкой на элементы из массива.Чтобы объяснить, вот рабочий скрипт с простым массивом и неэффективным обходным путем:
var itemArray:Array = new Array("ball","box","hex"); //only a few items in this prototype
scrollitems.ball.ifeedback = "Woo... hoo...";
scrollitems.box.ifeedback = "Great!";
scrollitems.hex.ifeedback = "Oops!";
scrollitems.ball.isuitable = true;
scrollitems.box.isuitable = true;
scrollitems.hex.isuitable = false;
for (var i:int=0; i<itemArray.length; i++)
{
var itemname:String = String(itemArray[i]);
var curritem:MovieClip = MovieClip(scrollitems.getChildByName(itemname));
if (curritem != null)
{
curritem.startX = curritem.x;
curritem.startY = curritem.y;
curritem.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
curritem.addEventListener(MouseEvent.MOUSE_UP, dropIt);
curritem.buttonMode = true;
}
}
Вот потенциально лучший скрипт, использующий ассоциативный массив, но он не работает согласно комментариям CAP ...
var itemArray:Array = new Array[{iname:"ball",isuitable:true,ifeedback:"Well done!"},
{iname:"box",isuitable:true,ifeedback:"Great!"},
{iname:"hex",isuitable:false,ifeedback:"Oops!"}];
for (var i:int=0; i<itemArray.length; i++)
{
var itemname:String = String(itemArray[i].iname); // THIS DOESNT WORK - ITEMNAME IS A STRING BUT CANT ASSIGN INAME TO THIS STRING??
var curritem:MovieClip = MovieClip(scrollitems.getChildByName(itemname));
if (curritem != null)
{
curritem.startX = curritem.x;
curritem.startY = curritem.y;
curritem.isuitable= curritem.isuitable; //NOT WORKING - HOW TO ASSIGN THIS??
curritem.ifeedback = curritem.ifeedback; // NOT WORKING - HOW TO ASSIGN THIS??
curritem.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
curritem.addEventListener(MouseEvent.MOUSE_UP, dropIt);
curritem.buttonMode = true;
}
}
Есть предложения для новичка AS3?