论坛帮助 |
社区圈子 |
日历事件 |
2017-04-19, 07:54 | 只看该作者 #6 | ||
|
|||
正式会员
等级: 三袋长老
|
代码:
//~ 原理: //~ 取出真实坐标a-->复制(不是赋值)该数组进行排序b-->计算出最大数值并加上偏移建立需要的数据c //~ -->b与c进行排序,使位置产生对应关系-->进行a与b的对比,相同建立二级数组d([a,c])加入到最后的位置数组d中 //~ -->取值从d中。 //~ 关键问题: //~ 1.数组最大值,排序sort(小-->大),复制.slice()与赋值的不同(赋值会改变原数组) //~ 2.使用alert,记录跟踪数据,分析得出,数组赋值与复制的不同 //~ 3.二级循环的初步使用 var doc=app.activeDocument; var sel=doc.selection; var j=sel.length; var left=sel[0].position; var top=[];//真实数据 var top_max=0; var temp=[];//排序数据 var end=[];//标准数据 var endNumber=[];//最后存储的数据 for(var x=0;x<j;x++){ top.push(sel[x].geometricBounds[3]); // 真实数据 }; top_max=Math.max.apply(null,top);//取数组最大值 //~ alert('top.length'+'~'+top); temp=top.slice();//数组复制 赋值数组会同时改变。 temp.sort();//在原数组基础上排序 从小到大。 //~ alert('temp.length'+'~'+temp); var top_=top.length; var temp_=temp.length; var off=sel[0].height+4*2.834645; // 读出自高及加上偏移量 for(var i=0;i<temp_;i++){//建立等差数列 var temp_max=top_max-i*off; end.push(temp_max); }; end.sort(); //~ alert('end.length'+'~'+end); for(var i=0;i<top_;i++){ var top_a=top[i]; //~ alert(top_a); for(var m=0;m<temp_;m++){ var temp_a=temp[m]; if(top_a===temp_a){ endNumber.push([top[i],end[m]]);//建立二级数组,根据对应关系取数据 }; }; }; //~ alert('endtime.length'+'~'+endNumber); for(var y=0;y<j;y++){ var textArtRange =sel[y].story.textRange; textArtRange.characterAttributes.textFont =app.textFonts.getByName("Simhei");// 字体设置为黑体; textArtRange.characterAttributes.size=4*2.834645;// 大小设置为5mm textArtRange.characterAttributes.capitalization=FontCapsOption.ALLCAPS // 大小设置 textArtRange.characterAttributes.fillColor=reColor(); sel[y].left=left[0]; sel[y].top=endNumber[y][1]; }; function reColor(){ var myCMYK = new CMYKColor(); myCMYK.cyan = 100; myCMYK.magenta =100; myCMYK.yellow =100; myCMYK.black = 100; return myCMYK; } |
||
2017-04-19, 10:13 | 只看该作者 #8 | ||
|
|||
正式会员
等级: 三袋长老
|
引用:
是怎么个顺序在画板中排列的? 如果你改变顺序了,好像sel【i】不发生变化,如何可以重新定位 我的这个文本排列,有时候是正确的,有时候出现了混排。 |
||
2017-04-19, 10:30 | 只看该作者 #9 | ||
|
|||
正式会员
等级: 三袋长老
|
引用:
排序结果是: 1,10,1000,25,40,5 应该为: 1,5,10,25,40,1000 解决方案:加入了 function sortNumber(a,b) { return a - b } arr.sort(sortNumber) 结果运行跟我需要的相同,非常感谢 |
||