我的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');
答案 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);