Flash 将同一基类分配给多个库定义
所以我知道你可以在Movieclips library信息字段中为库定义分配一个基类,但是如果我在库中有30个项,并且我更改了基类,这会成为一个麻烦,当我实例化库定义时,这可以通过编程实现吗?干杯Flash 将同一基类分配给多个库定义,flash,actionscript-3,Flash,Actionscript 3,所以我知道你可以在Movieclips library信息字段中为库定义分配一个基类,但是如果我在库中有30个项,并且我更改了基类,这会成为一个麻烦,当我实例化库定义时,这可以通过编程实现吗?干杯 var new_shiz:MyItem1 = new MyItem1(); // Needs to have a generic base class of MyItem 你是否在寻找一种方法来抓住他们作为他们的超类? 如果您的库类只是一组图形,则可以这样做: var new_shiz:Sprit
var new_shiz:MyItem1 = new MyItem1(); // Needs to have a generic base class of MyItem
你是否在寻找一种方法来抓住他们作为他们的超类? 如果您的库类只是一组图形,则可以这样做:
var new_shiz:Sprite = new MyItem1() as Sprite;
或
这就是您要做的吗?使用Flash CS4,您可以在库中选择多个项目,并为所有项目设置基类(通常通过右键单击)。但有时您可能真的需要更高级的方式来自动化某些东西-那么JSFL就是您的朋友,它会让您的友谊快乐。
//将此代码另存为:WHATEVERNAMEYOULIKETOCALLIT.JSFL
// SAVE THIS CODE AS: WHATEVERNAMEYOULIKETOCALLIT.jsfl
// Now simply open flash, select the items you'd like to change the base class IN THE LIBRARY and double click the script
/**
* ...
* @author Bruno Pavanelli Mestre dos Magos
*/
var lib = fl.getDocumentDOM().library;
var libSelection = lib.getSelectedItems();
var length = libSelection.length;
var appendix;
var count = 0;
Validate();
function Validate()
{
fl.outputPanel.clear();
fl.trace(">>> Change Base Class Name\nThis will change the base class name to every\nselected item in your library.");
if(length <= 0)
{
fl.trace("No objects selected in the library!");
alert("No objects selected in the library!");
return;
}
appendix = prompt("Choose a name for the base class(ex: flash.display.MovieClip)");
if(appendix == null)
{
fl.trace("Appendix selection canceled!");
return;
}
Execute();
}
function Execute()
{
for(var itemIndex=0; itemIndex < length; itemIndex++)
{
var theItem = libSelection[itemIndex];
if(theItem.linkageExportForAS)
{
theItem.linkageBaseClass = appendix;
continue;
}else{
theItem.linkageExportForAS = true;
var wholePackage = appendix.split('.');
var name = wholePackage[wholePackage.length-1];
theItem.linkageClassName = name + itemIndex.toString();
theItem.linkageBaseClass = appendix;
}
count++;
}
fl.outputPanel.trace("Process Complete!\n" + count + " base class name(s) modified!");
}
//现在只需打开flash,在库中选择要更改基类的项,然后双击脚本
/**
* ...
*@作者Bruno Pavanelli Mestre dos Magos
*/
var lib=fl.getDocumentDOM().library;
var libSelection=lib.getSelectedItems();
var length=libSelection.length;
var附录;
var计数=0;
验证();
函数验证()
{
fl.outputPanel.clear();
fl.trace(“>>>更改基类名称\n这将更改库中每个\n选定项的基类名称。”);
if(length Hi,更多新的MyItem1()作为MyItem(似乎不起作用)因此,当我实例化MyItem1时,它的行为将与MyItem类文件中的定义相同,多个库项将共享相同的行为。您是否尝试使它们都扩展同一个类?因为您可以选择自定义类作为基类。因此,您可以使用多个不同的符号来扩展您的基类。请确保您自定义了它们类为符号类型扩展了适当的显示对象类。真的吗?-2?这完美地回答了他的问题。
// SAVE THIS CODE AS: WHATEVERNAMEYOULIKETOCALLIT.jsfl
// Now simply open flash, select the items you'd like to change the base class IN THE LIBRARY and double click the script
/**
* ...
* @author Bruno Pavanelli Mestre dos Magos
*/
var lib = fl.getDocumentDOM().library;
var libSelection = lib.getSelectedItems();
var length = libSelection.length;
var appendix;
var count = 0;
Validate();
function Validate()
{
fl.outputPanel.clear();
fl.trace(">>> Change Base Class Name\nThis will change the base class name to every\nselected item in your library.");
if(length <= 0)
{
fl.trace("No objects selected in the library!");
alert("No objects selected in the library!");
return;
}
appendix = prompt("Choose a name for the base class(ex: flash.display.MovieClip)");
if(appendix == null)
{
fl.trace("Appendix selection canceled!");
return;
}
Execute();
}
function Execute()
{
for(var itemIndex=0; itemIndex < length; itemIndex++)
{
var theItem = libSelection[itemIndex];
if(theItem.linkageExportForAS)
{
theItem.linkageBaseClass = appendix;
continue;
}else{
theItem.linkageExportForAS = true;
var wholePackage = appendix.split('.');
var name = wholePackage[wholePackage.length-1];
theItem.linkageClassName = name + itemIndex.toString();
theItem.linkageBaseClass = appendix;
}
count++;
}
fl.outputPanel.trace("Process Complete!\n" + count + " base class name(s) modified!");
}