Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3-用函数参数的名称声明变量_Flash_Actionscript 3_Function_Variables - Fatal编程技术网

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

Flash AS3-用函数参数的名称声明变量,flash,actionscript-3,function,variables,Flash,Actionscript 3,Function,Variables,我的flash AS3文件中有一个函数。我想在调用此函数时传递一个参数,并使该参数成为我声明的新FLV播放组件的名称 function newVideo(myVideoName){ var [myVideoName]:FLVPlayback = new FLVPlayback(); } -- 编辑-我现在有以下代码。如何将FLV播放组件添加到舞台 > function newVideo(myVideoName:String):FLVPlayback { > >

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

你在这里做的事是不允许的。使用字符串引用(
this['someObject']
)创建和访问对象的符号不允许强制转换类型。此外,如果不使用标识符符号,则无法使用该名称直接访问以这种方式创建的对象:

this['foo']:Object = {}; // fails, 1078: Label must be a simple identifier.
this['foo']        = {}; // works

因此,要使函数正常工作,应该编写以下代码:

function newVideo(myVideoName:String):void
{
    this[myVideoName] = new FLVPlayback();
}
但只有这样,您才能使用相同的字符串引用访问播放机,如下所示:

this[myVideoName].play();
function newVideo(myVideoName:String):FLVPlayback
{
    var flvP:FLVPlayback = new FLVPlayback();
    flvP.name = myVideoName;
    return flvP;
}
var myPlayer:FLVPlayback = newVideo('player1');
addChild(myPlayer);
此外,上述任何一项都没有为FLVPlayback组件的实例命名。它所做的是定义对FLVPlayback的引用的名称。如果要创建实例名为
myVideoName
的FLVPlayback,则应创建如下函数:

this[myVideoName].play();
function newVideo(myVideoName:String):FLVPlayback
{
    var flvP:FLVPlayback = new FLVPlayback();
    flvP.name = myVideoName;
    return flvP;
}
var myPlayer:FLVPlayback = newVideo('player1');
addChild(myPlayer);
这样做的目的是创建FLVPlayback组件的新实例,为其指定实例名,并返回对其的引用。您可以这样使用它:

this[myVideoName].play();
function newVideo(myVideoName:String):FLVPlayback
{
    var flvP:FLVPlayback = new FLVPlayback();
    flvP.name = myVideoName;
    return flvP;
}
var myPlayer:FLVPlayback = newVideo('player1');
addChild(myPlayer);

谢谢你,这很有道理。但是,我以前使用addChild将FLVPlayback组件添加到stage中。你能解释一下我将如何把它合并到你的函数中,因为它似乎不起作用?我很乐意用更多的信息编辑答案,但你能解释一下“不起作用”是什么意思吗?嗨,Shane,我用我现在的代码编辑了我的问题,感谢你的回答。我已经设置了一个源参数-我现在如何将FLV播放组件添加到舞台上?@user469453-我已经更新了我的答案,如果这对你不起作用,我需要你得到的错误类型的一些细节。嗨,Shane-这真的很有帮助。非常感谢-这将为我节省大量时间和代码:)