在 Animate CC 中,我可以使用以下代碼從庫中動態添加 MovieClip:
var MovieClipName_mc:MovieClipFromLibrary = new MovieClipFromLibrary();
stage.addChild(MovieClipName_mc);
我想更改即時添加的 MovieClip,因此我需要將“MovieClipFromLibrary”作為變數。但是,我似乎無法得到任何作業。
我希望我已經正確解釋了?非常感謝幫助。謝謝!
uj5u.com熱心網友回復:
getDefinitionByName (...) 方法之類的東西應該可以作業。
//# 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);
}
請記住,您只能通過這種方式訪問??當前SWF的類。如果您希望它從加載的SWF中獲取內容,則需要設定某種庫管理器并通過Loader.contentLoaderInfo獲取內容。應用程式域。getDefinition (...) 方法。
uj5u.com熱心網友回復:
那個確切的代碼對我不起作用。它給了我一個隱含的強制錯誤。但是,它非常有幫助,因為這確實有效......
//Get Item from library
var MCName:Class = getDefinitionByName('TEST') as Class;
var MovieClip_mc:MovieClip = new MCName();
stage.addChild(MovieClip_mc);
所以非常感謝!!??????
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/423413.html
標籤:
上一篇:設計模式——前言
