获取库对象列表?

有没有办法从Flash IDE访问或遍历导出到ActionScript的所有对象的列表? 我希望通过迭代选定的MC并以某种方式处理它们而省却一些麻烦,而不知道它们的名称。

谢谢。


我使用这里描述的SwfClassExplorer:http://flassari.is/2008/07/swf-class-explorer-for-as3/


不在运行时,不。 您可以在IDE中使用JSFL操作库对象:http://livedocs.adobe.com/flash/9.0/main/flash_cs3_extending.pdf。 不知道这是否有帮助,但也许你可以通过某种方式分析库来生成应用程序中使用的代码。

var lib = fl.getDocumentDOM().library;
for (var i = 0; i < lib.items.length; i++)
{
    var item = lib[0];
    fl.trace(item.name + " " + item.getItemType());
}

也许根据库对象的getItemProperty()getItemType()生成一些代码。

除此之外,我认为你最好的选择就是像别人说的那样去做。 创建一个虚拟MovieClip,其中包含每个元素并将其隐藏在舞台之外。 为它添加一个“添加到stage”的侦听器并循环其子元素,并使用“reflection”getQualifiedClassName根据它的类执行操作,或者仅使用实例名称和switch语句。

最后,你究竟是在处理每个这些动画片段? 也许它更像是一个设计问题,它们应该都扩展了一个常见的MovieClip子类,该子类添加了一个“添加到stage”处理程序,您可以查看MovieClip的类型,因为它已添加到应用程序并在该单一功能中执行某些操作。 我现在正在处理一些本地化工作,这就是我们在运行时处理多个不同剪辑的方式。


这个问题有点类似于这个问题。

这是您需要列出导出到actionscript的唯一影片剪辑的JSFL:

var doc = fl.getDocumentDOM();
var libItems = doc.library.items;
var libItemsNum = libItems.length;
var classesString = 'var '+doc.name.substr(0,doc.name.length-4)+'Classes = [';
var classesNum = 0;
var classes = [];

fl.outputPanel.clear();
for(var i = 0 ; i < libItemsNum; i++){
 if(libItems[i].linkageExportForAS){
  classes[classesNum] = libItems[i].linkageClassName;
  classesNum++;
 }  
}
for(i = 0; i < classesNum; i++){
 if(i < classesNum-1) classesString += '"'+classes[i]+'",';
 else      classesString += '"'+classes[i]+'"];';
}
fl.clipCopyString(classesString);
fl.trace(classesString);

它将您导出的类的名称作为字符串数组追踪出来,因此您可以将其与ApplicationDomain的getDefinitionByName()flash.utils.getDefinition()一起使用 。 此外,它将跟踪的消息复制到剪贴板。 如果将JSFL保存在Commands文件夹中,则可以设置快捷键的快捷键。

HTH,乔治

链接地址: http://www.djcxy.com/p/44561.html

上一篇: Getting a list of Library objects?

下一篇: Loading Multiple Tables using SSIS keeping foreign key relationships