То, что вы здесь делаете, не допускается. Нотация для создания и доступа к объектам с использованием строковой ссылки (this['someObject']
) не позволяет вам приводить тип. Кроме того, объекты, созданные таким образом, не могут быть напрямую доступны с использованием этого имени без использования обозначения идентификатора:
this['foo']:Object = {}; // fails, 1078: Label must be a simple identifier.
this['foo'] = {}; // works
и
this['foo'] = {};
trace(this.foo); // fails, 1120: Access of undefined property foo.
trace(this['foo']); // works, [object Object]
Итак, чтобы ваша функция работала, нужно написать:
function newVideo(myVideoName:String):void
{
this[myVideoName] = new FLVPlayback();
}
но только тогда вы сможете получить доступ к игроку, используя ту же строковую ссылку, например:
this[myVideoName].play();
Кроме того, ни один из вышеперечисленных не дает экземпляру компонента FLVPlayback имя. Что он делает, так это определяет имя ссылки на ваш FLVPlayback. Если вы намереваетесь создать FLVPlayback с именем экземпляра myVideoName
, вам следует создать функцию, которая выглядит следующим образом:
function newVideo(myVideoName:String):FLVPlayback
{
var flvP:FLVPlayback = new FLVPlayback();
flvP.name = myVideoName;
return flvP;
}
Это создает новый экземпляр компонента FLVPlayback, присваивает ему имя экземпляра и возвращает ссылку на него. Вы бы использовали это так:
var myPlayer:FLVPlayback = newVideo('player1');
addChild(myPlayer);