-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path实例引用替换InstanceReplacement.jsfl
161 lines (121 loc) · 6.01 KB
/
实例引用替换InstanceReplacement.jsfl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
//
// InstanceReplacement
//
// This command was recorded by Adobe Animate.
// This plugin was made by Endlin Boeingstein 2024/7/12
//输入A元件前缀
var A_name=prompt("A->B,Please enter A's name.","");
//输入B元件前缀
var B_name=prompt("A->B,Please enter B's name.","");
try{
if(A_name==null||B_name==null) throw "Stop Running.";
// //主xfl路径
// var mainxflpath=(an.getDocumentDOM().pathURI).substring(0,(an.getDocumentDOM().pathURI).lastIndexOf("/"));
//
// //设置被选中的数组
// var selection=new Array();
// var x=0;
//遍历library的文件,记录library的文件
var itemArray = an.getDocumentDOM().library.items;
//循环获取库内容
for(i in itemArray){
//输出文件名称
an.trace("library item's name:"+itemArray[i].name);
//输出文件类型
//an.trace(itemArray[i].itemType);
//避免B引用A导致重复无效替换卡死,也就是造成B引用B的情况
if(itemArray[i].name!=B_name){
//判定是否为元件(影片剪辑/图形)
if(itemArray[i].itemType=="movie clip"||itemArray[i].itemType=="graphic"){
// 打开库中的元件
an.getDocumentDOM().library.editItem(itemArray[i].name);
//获取时间轴
var symboltl=itemArray[i].timeline;
//获取时间轴内的图层
var symbollayers=symboltl.layers;
//循环得到图层内容
for(var ly=0;ly< symbollayers.length;ly++){
an.trace("layer name:"+symbollayers[ly].name);
//获取帧数组
var frameArray = symbollayers[ly].frames;
//遍历获取帧
for(var frm=0;frm< frameArray.length;frm++){
//获取引用对象数组
var symbolelements=frameArray[frm].elements;
/*var ele=0;
while(ele<symbolelements.length)*/
//遍历获取引用对象
for(var ele=0;ele<symbolelements.length;ele++){
//an.trace("element type:"+symbolelements[ele].elementType);
//如果类型为元件
if(symbolelements[ele].elementType=="instance"){
//an.trace("Instance: " + symbolelements[ele].instanceType);
/*if(symbolelements[ele].instanceType=="symbol"){*/
//an.trace("引用:"+a.name+"引用"+symbolelements[ele].libraryItem.name);
if(symbolelements[ele].libraryItem.name==A_name){
//检测是否被锁或者是否隐藏
if((!an.getDocumentDOM().getTimeline().getLayerProperty("locked")&&(an.getDocumentDOM().getTimeline().getLayerProperty("visible")))){
an.getDocumentDOM().selectNone();
//定位到当前层
an.getDocumentDOM().getTimeline().currentLayer=ly;
//定位到当前帧
an.getDocumentDOM().getTimeline().currentFrame=frm;
an.getDocumentDOM().selection=[symbolelements[ele]];
//记录旧名称
var elementoldname=symbolelements[ele].libraryItem.name;
//确定交换为的元件
var swaper=itemArray[an.getDocumentDOM().library.findItemIndex(B_name)];
//交换引用
an.getDocumentDOM().selection[0].libraryItem = swaper;
//2025年1月25日废除//an.getDocumentDOM().swapElement(B_name);
an.trace(elementoldname+"->"+symbolelements[ele].libraryItem.name+"......");
//刷新数组
symbolelements=frameArray[frm].elements;
//2025年1月24日废弃//ele--;
ele=-1;
an.getDocumentDOM().selectNone();
}
else{
an.trace("This layer is invisible or locked. ");
}
}
else{}
/*}
else{}*/
}
}
}
}
// 返回到主场景
an.getDocumentDOM().exitEditMode();
//获取libaryitem名,否则返回场景名
//var it = symboltl.libraryItem;
//if (it)
//fl.trace("libraryItem name: " + it.name);
//else
//fl.trace("scene name: " + an.getDocumentDOM().getTimeline().name);
}
}
else{}
}
//an.getDocumentDOM().selectNone();
//an.getDocumentDOM().selection=selection;
//an.getDocumentDOM().convertSelectionToBitmap();
alert("InstanceReplacement Done");
// 选择库项目: Symbol 35
//var lib=an.getDocumentDOM().library;
//for (item in lib) {
//an.trace(lib[item].name);
//}
//an.getDocumentDOM().library.selectItem('Symbol 35');
// 编辑库项目
//an.getDocumentDOM().library.editItem();
// 更改选择: {x:17, y:29.1}, false, true
//an.getDocumentDOM().mouseClick({x:17, y:29.1}, false, true);
// 更改选择: {x:17, y:29.1}, false, true
//an.getDocumentDOM().mouseClick({x:17, y:29.1}, false, true);
// 转换为位图
//an.getDocumentDOM().convertSelectionToBitmap()
}catch (e) {
alert(e);
}