AS3 - объявить переменную с именем параметра функции - PullRequest
0 голосов
/ 07 августа 2011

У меня есть функция в моем флэш-файле AS3.Я хотел бы передать параметр при вызове этой функции и сделать так, чтобы этот параметр стал именем нового компонента воспроизведения FLV, который я объявляю;

function newVideo(myVideoName){
var [myVideoName]:FLVPlayback = new FLVPlayback();
}

- редактировать - теперь у меня есть следующий код.Как добавить компонент воспроизведения FLV на сцену?

> function newVideo(myVideoName:String):FLVPlayback {
>    
>     var flvP:FLVPlayback = new FLVPlayback();
>     flvP.name = myVideoName;
      flvP.source = "argentinaTrailer.f4v"; 
>     return flvP;
   }
> 
>  var myPlayer:FLVPlayback = newVideo('player1');

1 Ответ

1 голос
/ 07 августа 2011

То, что вы здесь делаете, не допускается. Нотация для создания и доступа к объектам с использованием строковой ссылки (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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...