Actionscript 3 AS3动态电影剪辑名称作为变量
在Animate CC中,我可以使用以下代码从库中动态添加MovieClips:Actionscript 3 AS3动态电影剪辑名称作为变量,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,在Animate CC中,我可以使用以下代码从库中动态添加MovieClips: var MovieClipName_mc:MovieClipFromLibrary = new MovieClipFromLibrary(); stage.addChild(MovieClipName_mc); 我想更改正在动态添加的MovieClip,因此需要将“MovieClipFromLibrary”作为变量。然而,我似乎什么也做不到 我希望我解释得对吗?非常感谢你的帮助。谢谢 类似于(…)的方法应该可以工
var MovieClipName_mc:MovieClipFromLibrary = new MovieClipFromLibrary();
stage.addChild(MovieClipName_mc);
我想更改正在动态添加的MovieClip,因此需要将“MovieClipFromLibrary”作为变量。然而,我似乎什么也做不到
我希望我解释得对吗?非常感谢你的帮助。谢谢 类似于(…)的方法应该可以工作
//# setup the vars
var myVar :String = "MovieClipFromLibrary";
var MovieClipName_mc :Class;
//# apply the vars and add to screen
MovieClipName_mc = getDefinitionByName( myVar ) as Class;
stage.addChild(MovieClipName_mc);
您还可以创建一个函数createInstance
,负责添加多个变量,如下所示:
实施:
import flash.utils.getDefinitionByName;
function createInstance(avalue:*):*
{
var C:Class;
if (avalue is Class)
{
C = avalue as Class;
}
else if (avalue is String)
{
// If there is actually a class in library
// with the provided class name, then
// C will be filled with a valid class.
C = getDefinitionByName(aname) as Class;
}
if (C != null)
{
return new C;
}
else
{
return null;
}
}
var M:DisplayObject;
// Pass class name as String.
M = createInstance("MovieClipFromLibrary");
if (M != null)
{
stage.addChild(M);
}
// Pass class reference as is.
M = createInstance(MovieClipFromLibrary);
if (M != null)
{
stage.addChild(M);
}
用法:
import flash.utils.getDefinitionByName;
function createInstance(avalue:*):*
{
var C:Class;
if (avalue is Class)
{
C = avalue as Class;
}
else if (avalue is String)
{
// If there is actually a class in library
// with the provided class name, then
// C will be filled with a valid class.
C = getDefinitionByName(aname) as Class;
}
if (C != null)
{
return new C;
}
else
{
return null;
}
}
var M:DisplayObject;
// Pass class name as String.
M = createInstance("MovieClipFromLibrary");
if (M != null)
{
stage.addChild(M);
}
// Pass class reference as is.
M = createInstance(MovieClipFromLibrary);
if (M != null)
{
stage.addChild(M);
}
请记住,您只能通过这种方式访问当前SWF的类。如果您希望它从加载的SWFs获取内容,则需要设置某种库管理器,并通过..(…)方法获取内容。类似于(…)方法的方法应该可以工作
//# setup the vars
var myVar :String = "MovieClipFromLibrary";
var MovieClipName_mc :Class;
//# apply the vars and add to screen
MovieClipName_mc = getDefinitionByName( myVar ) as Class;
stage.addChild(MovieClipName_mc);
您还可以创建一个函数createInstance
,负责添加多个变量,如下所示:
实施:
import flash.utils.getDefinitionByName;
function createInstance(avalue:*):*
{
var C:Class;
if (avalue is Class)
{
C = avalue as Class;
}
else if (avalue is String)
{
// If there is actually a class in library
// with the provided class name, then
// C will be filled with a valid class.
C = getDefinitionByName(aname) as Class;
}
if (C != null)
{
return new C;
}
else
{
return null;
}
}
var M:DisplayObject;
// Pass class name as String.
M = createInstance("MovieClipFromLibrary");
if (M != null)
{
stage.addChild(M);
}
// Pass class reference as is.
M = createInstance(MovieClipFromLibrary);
if (M != null)
{
stage.addChild(M);
}
用法:
import flash.utils.getDefinitionByName;
function createInstance(avalue:*):*
{
var C:Class;
if (avalue is Class)
{
C = avalue as Class;
}
else if (avalue is String)
{
// If there is actually a class in library
// with the provided class name, then
// C will be filled with a valid class.
C = getDefinitionByName(aname) as Class;
}
if (C != null)
{
return new C;
}
else
{
return null;
}
}
var M:DisplayObject;
// Pass class name as String.
M = createInstance("MovieClipFromLibrary");
if (M != null)
{
stage.addChild(M);
}
// Pass class reference as is.
M = createInstance(MovieClipFromLibrary);
if (M != null)
{
stage.addChild(M);
}
请记住,您只能通过这种方式访问当前SWF的类。如果您想让它从加载的SWFs获取内容,您需要设置某种库管理器,并通过..(…)方法获取内容。确切的代码对我不起作用。这给了我一个隐含的强迫错误。然而,这是非常有用的,因为这确实有效
//Get Item from library
var MCName:Class = getDefinitionByName('TEST') as Class;
var MovieClip_mc:MovieClip = new MCName();
stage.addChild(MovieClip_mc);
所以非常感谢 那个确切的密码对我不起作用。这给了我一个隐含的强迫错误。然而,这是非常有用的,因为这确实有效
//Get Item from library
var MCName:Class = getDefinitionByName('TEST') as Class;
var MovieClip_mc:MovieClip = new MCName();
stage.addChild(MovieClip_mc);
所以非常感谢@VC.One为什么你要用一块非工作脚本更新我的答案(你的代码将一个类添加到显示列表而不是实例)?@VC.One为什么你要用一块非工作脚本更新我的答案(你的代码将一个类添加到显示列表而不是实例)?