InfinityBox是我正在开发的一个综合性工具型脚本,预计最初版本有两个功能。
- 打开的文件记得使用 FileObj.close() 关闭。
- 在创建含有可浮动面板的脚本(在ScriptUI Panel文件夹内的脚本)时,和直接执行的脚本在使用ScriptUI对象上有一些差异,这种差异有时候是莫名其妙的,只能是不断试验来了解。之前有个文章说了,在创建可浮动面板时,Ae似乎直接就提供了一个默认的窗口来作为可浮动面板的窗口,直接体现就是必须在创建窗口时使用 var win = (this instanceof Panel) ? this : new Window("window"); ,否则UI控件不会显示或不显示在可浮动面板中,而是像直接执行的脚本那样单独出现一个窗口。
- 要想在可浮动面板的脚本中使用资源字符串创建窗口时,控件的资源字符串必须在一个
Group {} 内,这个Group就代表着这个窗口,你可以在这个Group后添加任何想对窗口添加的参数,不过好像
preferredSize 不能用。举例:
-
1234567var res = "Group { orientation:'stack', alignment:['fill','fill'], alignChildren:['fill','fill'], margins:5,\gStart: Group { orientation:'column', alignment:['fill','fill'], alignChildren:['fill','fill'], \smile: Image {}\st: StaticText { text:'感谢使用 Infinity Box', alignment:'center' }\btnInstall: Button { text:'安装脚本' }\}\}";
-
- 上面的资源字符串在添加时要赋予给一个变量,然后使用那个变量来调用其中的控件。举例:
-
1win.grp = win.add(res);
-
- 在使用图片数据化时,不能在资源字符串中添加变量,所以图片属性必须在外部单独设置,而且不需要添加new File()来创建匿名实例。
- win.grp.gStart.smile.image = imgDate.files["smile.png"];
- 必须使用 win.layout.layout(true); 这个代码,否则UI控件不会显示,原因未知。这个代码的意思是强制脚本布局一次。
- win.onResizing = function() { win.layout.resize(); }; 添加这个代码可以实现响应式布局。
- UIObj.visible的布尔属性值可以控制UI控件或容器的可见和不可见,但是即使在不可见状态下,它们的位置还是会空出来。那么怎样才能实现隐藏并不占位置呢?我测试了下 hide() 方法,效果还是会占据原有位置。以后在用到的时候再研究吧。