AS3动态影片剪辑名称为变量

时间:2020-11-12 17:39:45

标签: actionscript-3 flash actionscript

在Animate CC中,我可以使用以下代码从库中动态添加MovieClips:

var MovieClipName_mc:MovieClipFromLibrary = new MovieClipFromLibrary();
stage.addChild(MovieClipName_mc);

我想即时更改要添加的MovieClip,因此需要将“ MovieClipFromLibrary”作为变量。但是,我似乎什么也没用。

我希望我已经正确解释了吗?帮助极大的赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

类似getDefinitionByName(...)方法的方法应该起作用。

WM_KEYDOWN

您还可以制作一个函数//# 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;
    }
}

请记住,您只能以这种方式访问​​当前 SWF 的类。如果您希望它从加载的 SWF 中获取内容,则需要设置某种库管理器并通过Loader.contentLoaderInfoapplicationDomain。{{3}来获取内容。 }(...)方法。

答案 1 :(得分:1)

那个确切的代码对我不起作用。它给了我一个隐式的强制错误。但是,它非常有用,因为它确实有效...

    //Get Item from library
    var MCName:Class = getDefinitionByName('TEST') as Class;
    
    var MovieClip_mc:MovieClip = new MCName();
    stage.addChild(MovieClip_mc);

非常感谢!! ???

相关问题