ev и titl равны Strings
, а не Object
, в as3 нет eval, поэтому вы не сможете создать новую переменную на основе имени строки .Но вы можете создать новый Object
, который будет иметь поле на основе вашей строки ev
:
var o:Object={};
o[ev]="....";
Таким образом, если ev равно строке "ev1", у вас будет объект с полем с именем ev1 => o.ev1 = ...
Для заголовка вы можете сделать то же самое, создав новый объект, который будет иметь поле на основе строки заголовка:
var o:Object={};
o[titl]="...";
Так что, если titl равен строке "title1", у вас будет объект с полем с именем title1 => o.title1 = ...
То же самое для текста, вы должны создать объект для хранения текстового поля.
Смешивая всю эту информацию, вы получите:
var eventChildren:XMLList = eventInput.channel.children();
var nr:Number=0;
var AllFields:Object={};
for each (var eventInfo:XML in eventChildren) {
nr++;
trace(eventInfo.title);
var ev="ev"+String(nr);
var titl="title"+String(nr);
trace(ev);
trace(titl);
var oTitle:Object = {}; // create object for the field titleXX
oTitle[titl] = {text:eventInfo.title}; // create and assign the field text to a new object
allFields[ev] = oTitle; // assign the title object to the field evXX
}
// then you can have access to all your field within the object allFields
trace(allFields.ev1.title1.text)
trace(allFields.ev2.title2.text)
См. Также вопрос для обозначения объекта