AS3 - 使用函数参数的名称声明变量

时间:2011-08-07 11:44:02

标签: flash actionscript-3 function variables

我的flash 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 个答案:

答案 0 :(得分:1)

不允许你在这做什么。使用字符串引用(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的引用名称。如果您打算创建实例名称为myVideoName的FLVPlayback,那么您应该创建一个如下所示的函数:

function newVideo(myVideoName:String):FLVPlayback
{
    var flvP:FLVPlayback = new FLVPlayback();
    flvP.name = myVideoName;
    return flvP;
}

这样做会创建FLVPlayback组件的新实例,为其分配实例名称,并返回对它的引用。你可以这样使用它:

var myPlayer:FLVPlayback = newVideo('player1');
addChild(myPlayer);