Как этого добиться?
Вы должны создать массив или ArrayCollection пользовательских элементов; концептуально примерно так:
var user : Array = new Array();
// create user1
var user1 : userType = new userType();
// set properties on user1
// .....
user.push(user1);
// create user2
var user2 : userType = new userType();
// set properties on user2
// .....
user.push(user2);
// create user3
var user3 : userType = new userType();
// set properties on user3
// .....
user.push(user3);
Вы можете написать любую логику, необходимую для создания пользовательских объектов. Это концептуально именно то, что я делаю с Календарем Flextras для создания дней. Основываясь на отображаемом календарном месяце, мы решаем, сколько дней создать, и создаем их, и сохраняем их в массиве. Вы можете использовать любую логику для создания ваших пользователей, которая подходит для вашей игры.
I probably need to use Repeater or DataGroup (what's the difference), but how do I handle the differing coordinates?
Ни Repeater, ни DataGroup не являются массивами. Они не будут создавать для вас массив или dataProvider и не позволят вам получить доступ к вашим элементам, как если бы они были массивом.
Ретранслятор - это, по сути, версия цикла MXML, и я считаю, что их следует избегать любой ценой. MXML просто не очень хороший язык для зацикливания.
Группа данных предназначена для отображения объектов на основе указанных вами данных (dataProvider) и класса макета (вертикальный, горизонтальный или мозаичный). Для меня это звучит так, будто вы хотите нестандартный макет; поэтому я не уверен, что рекомендую использовать DataGroup для отображения.
Should I introduce an array (or ArrayCollection? or ArrayList? this confuses me in Flex) of coordinates and somehow use it?
Да, я бы использовал массив. ArrayCollection - это просто оболочка для массива, которая предоставляет API для фильтрации и сортировки данных. ArrayList - это просто массив, который реализует интерфейс IList, поэтому его можно использовать в качестве dataProvider для DataGroup или других классов ListBase, таких как DataGrid.
Код, который вы разместили, не является подходом, который я бы рекомендовал. Если вы сделаете это в ActionScript, у вас будет гораздо более детальный контроль над расположением и расположением компонента. Вы можете извлечь пользу из чтения Flex Component LifeCycle. , чтобы понять, как компоненты UIC рисуют себя на экране; и как вы можете подключиться к этому, чтобы «заставить вещи работать». В этом случае «заставьте вещи работать» относится к вашему позиционированию.
Я пытаюсь портировать игру с чистого AS3 на Flex4.
Я знаю, что вы сказали это в начале своего поста, а не в конце, но я хотел задать вопрос "Почему?" Flex не был предназначен для игр; и я не уверен, что рекомендую петь как игровой движок. Я вижу, чем это может быть полезно для вас, если вы хотите создать меню или списки рекордов. Но вы должны достаточно легко использовать код AS3 и код Flex без необходимости переписывать / переделывать игру.