`

使用 jsfl 发布flash IDE 插件

阅读更多

http://blog.csdn.net/aosnowasp/article/details/8863601

 

Flash 有很多内置面板,调色面板、对齐面板、元件库面板等等。
有时为了工作方便,我们需要自己编写一些脚本加快处理一些重复性较大的工序,这里所说的“脚本”就是 JSFL。
JSFL 全称 Flash JavaScript,它类似于 Microsoft Word 中的“宏”(虽然我不太懂那东西),帮助用户在创作环境中执行重复性任务、或者生成一些特效什么的,但这并不是我们这次所说的重点。
我们今天制作的Flash面板正是调用了JSFL来处理一项重复性较大的任务:快速替换元件库中所有元件中的特定文本。

 

首先我们来看看一段 JSFL

 
var lib = fl.getDocumentDOM().library;

for( var i in lib )
{
	for( var j in lib[ i ])
	{ //遍历所有库元件
		if( lib[ i ][ j ].itemType == "graphic" || lib[ i ][ j ].itemType == "movie clip" )
		{ //判断,只有图形元件和影片元件里含有文本
			for( var k in lib[ i ][ j ].timeline.layers )
			{ //遍历图层
				for( var n in lib[ i ][ j ].timeline.layers[ k ].frames )
				{ //遍历所有帧
					for( var m in lib[ i ][ j ].timeline.layers[ k ].frames[ n ].elements )
					{ //遍历所有帧里的可视元素
						if( lib[ i ][ j ].timeline.layers[ k ].frames[ n ].elements[ m ] == "[object Text]" )
						{ //只有文本才执行下面的操作
							if( lib[ i ][ j ].timeline.layers[ k ].frames[ n ].elements[ m ].getTextString() == "愚蠢的熊猫" )
							{ //获取你需要操作的字符
								lib[ i ][ j ].timeline.layers[ k ].frames[ n ].elements[ m ].setTextString( "聪明的兔子" ); //替换字符
							}
						}
					}
				}
			}
		}
	}
}


这段代码的基本意思就是通过用JSFL把元件库中所有的文本取出来,然后对其内容做判断,进而替换新的内容
(只对元件库中的元件有效)。

 

制作 Flash 扩展组件的流程:

1. 现在我们打开Flash,在场景中加入两个输入型的文本框和一个按钮,再加入一些说明文字

 

 

2. 如上图所示,上面的文本框(实例名:ori_txt)我们可以输入查找的字符,
下面的文本框(实例名:new_txt)我们可以输入要替换成的字符,
最下面的按钮(实例名:btn)是用来执行JSFL的。

3. 接下来我们在AS层加入代码。首先为按钮编写侦听点击事件和执行函数:

 
btn.addEventListener( MouseEvent.CLICK, runScript );

function runScript( e:MouseEvent )
{
	var otxt:String = ori_txt.text; //点击按钮后读入文本框的字符
	var ntxt:String = new_txt.text; //同上
	var jsfl:String;
	MMExecute( jsfl );
}


大家可以留意到 MMExecute(); 这东西,它就是用来执行JSFL脚本的。
而我们预留了一个叫“JSFL”的字符型变量,这将被用来装载熊猫所写的JSFL脚本。

4. 特别需要留意的是我们的JSFL到了ActionScript必须变成一个字符串,所以我们得对准备好的JSFL做以下事情:
- 把特殊字符用转义字符处理好;
- 双引号变单引号;
- 把所有代码变成一行;
于是我们得到没有换行的代码:

 

 
var lib = fl.getDocumentDOM().library;for(var i in lib){for(var j in lib[i]){if(lib[i][j].itemType=='graphic'||lib[i][j].itemType=='movie clip'){for(var k in lib[i][j].timeline.layers){for(var n in lib[i][j].timeline.layers[k].frames){for(var m in lib[i][j].timeline.layers[k].frames[n].elements){if(lib[i][j].timeline.layers[k].frames[n].elements[m] == '[object Text]'){if(lib[i][j].timeline.layers[k].frames[n].elements[m].getTextString()=='愚蠢的熊猫'){lib[i][j].timeline.layers[k].frames[n].elements[m].setTextString('聪明的兔子');}}}}}}}}


5. 这个时候基本上把上面的代码代入JSFL变量就好了,但是那只能把“愚蠢的熊猫”变成“聪明的兔子”,
我们的文本框干嘛去了……
所以我们得把代码断开,断在“愚蠢的熊猫”和“聪明的兔子”处,为了好看,我们用这么几个字符型变量装载着:

 

 
var str1:String = "fl.outputPanel.clear();fl.outputPanel.trace('Start replacing text...');var lib = fl.getDocumentDOM().library;"
var str2:String = "for(var i in lib){for(var j in lib[i]){if (lib[i][j].itemType=='graphic'||lib[i][j].itemType=='movie clip'||lib[i][j].itemType=='button'){for(var k in lib[i][j].timeline.layers){for(var n in lib[i][j].timeline.layers[k].frames){for(var m in lib[i][j].timeline.layers[k].frames[n].elements){if(lib[i][j].timeline.layers[k].frames[n].elements[m]=='[object Text]'){if(lib[i][j].timeline.layers[k].frames[n].elements[m].getTextString()=='";
var str3:String = "'){lib[i][j].timeline.layers[k].frames[n].elements[m].setTextString('";
var str4:String = "');fl.outputPanel.trace('---');}}}}}}}}";
var str5:String = "fl.outputPanel.trace('All text replaced.');";


上面我加入了 fl.outputPanel.clear() 和 fl.outputPanel.trace(),它们会在输出面板清除和显示文本,用来提醒用户脚本的执行情况。

6. 通过第5步把代码断开以后,我们就在第6步把代码重新组合起来,这时可以把从文本框取得的变量包括进来了:

 

var jsfl:String = str1 + str2 + otxt + str3 + ntxt + str4 + str5;
MMExecute( jsfl );


7. 至此Flash部分就完成了,我们按照FlashPlayer9,AS3输出SWF,然后把这个SWF放到以下路径就完事了:
X:\Documents and Settings\UserName\Local Settings\Application Data\Adobe\Flash CS4\zh_cn\Configuration\WindowSWF
(红色部分按实际情况替换)

8. 终于大功告成了,打开Flash,在菜单“窗口 — 其他面板”下就可以找到你刚才创作的面板,欢呼吧!

9. 发布zxp扩展包

 

1、系统是否安装 Adobe Extension manager,安装 Flash 后默认都会有。
2、创建一个功能扩展安装文件(文件名以 .mxi 结尾的 XML 文档内容文件),并且准备好你发布好的 SWF 文件
3、在功能扩展管理器中,选择 “文件 > 打包 ZXP 扩展”
4、在随即出现的文件选择对话框中,浏览到您的功能扩展安装文件(文件名以 .mxi 结尾)并将其选定。单击“打开”。选择包文件的位置并指定它的名称(可以改名为 .mxp 结尾),保存。
注明:实际上,第3、4两步可以直接双击 mxi 文件来完成。设置导出的包名时,默认是 zxp ,你可以手动改为 xxx.mxp

mxi文件格式

  1. <macromedia-extension  
  2.     name="组件名称"  
  3.     version="版本号"  
  4.     type="Flash Component" >  
  5.     <author name="开发者" />  
  6.   
  7.     <products>  
  8.         <product name="Flash" version="11" primary="true" />  
  9.     </products>  
  10.   
  11.     <description>  
  12.         <![CDATA[ 组件介绍 ]]>  
  13.     </description>  
  14.   
  15.     <ui-access>  
  16.         <![CDATA[ 组件使用说明 ]]>  
  17.     </ui-access>  
  18.   
  19.     <license-agreement>   
  20.         <![CDATA[ 许可协议 ]]>   
  21.     </license-agreement>  
  22.   
  23.     <files>  
  24.         <file source="component.swf" destination="$flash/Components[/yourpath]" />  
  25.     </files>  
  26. </macromedia-extension>  
分享到:
评论

相关推荐

    jsflPanel:flash IDE插件,可以运行jsfl命令

    jsfl面板 flash IDE插件,可以运行jsfl命令 用法 下载并安装 。 单击 Flash Pro 菜单中的 Window&gt;Extensions&gt;jsflPanel 打开 jsflPanel。 在textarea中输入jsfl命令,点击运行按钮运行命令。

    Flash JSFL命令集

    本文将深入探讨Flash JSFL命令集,揭示其在导出Flash资源、批量发布FLA文件、批量设置FLA文件以及设置库资源的类绑定等方面的应用。 首先,让我们理解JSFL的基本概念。JSFL是一种基于JavaScript的脚本语言,专门为...

    Flash CS5 JSFL开发手册API帮助文档

    使用JSFL开发的小工具,可以增强Flash的工作流程,实现更高效的动画制作和开发过程。JSFL的工作原理是通过命令行执行JavaScript,与Flash的扩展API进行交互,执行各种扩展功能。 在实际应用中,JSFL可以用于多种...

    例说利用JSFL批改FLASH操作题的方法.doc

    【JSFL批改FLASH操作题的方法】 JSFL(Flash JavaScript)是Adobe Flash Professional中的扩展脚本语言,它允许用户通过JavaScript语法控制Flash的创作环境,包括编辑、导出和批改FLA文件。JSFL技术在自动批改Flash...

    FLASH操作评分常用JSFL

    FLASH操作评分常用JSFL,FLASH操作评分常用JSFL,可制作FLASH的自评分练习题,可制作FLASH的自评分练习题,可制作FLASH的自评分练习题,

    jsfl技术文档(帮助文档)

    使用JSFL,你可以创建自定义面板,添加自己的工具和功能,进一步提升Flash IDE的工作效率。 3. **插件开发** JSFL也可用于开发插件,这些插件能够扩展Flash的功能,提供独特的绘图工具、动画效果或其他专业级特性...

    jsfl中文帮助文档

    JSFL(JavaScript for Flash)是Adobe Flash Professional软件中使用的脚本语言,允许开发者使用JavaScript语法编程来控制Flash Professional界面和编辑环境。 2. 法律声明知识点:文档中提到,有关Adobe Flash ...

    flash元件批量改名命令(jsfl)

    为了解决这个问题,我们可以使用JavaScript for Flash (JSFL) 来编写自定义脚本,实现元件的批量改名功能。"flash元件批量改名命令(jsfl)"这个主题就是关于如何通过JSFL脚本来自动化这个过程。 首先,我们需要...

    Flash重命名库元件JSFL命令

    为了方便多次使用,你可以将这段代码保存为一个JSFL文件,然后通过Flash Professional的"Commands"菜单调用或通过快捷键执行。 需要注意的是,虽然这个脚本可以快速地重命名元件,但如果没有适当的逻辑控制,可能会...

    jsfl-support:IntelliJ平台的插件,提供对JSFL API的支持

    总结来说,"jsfl-support"插件是IntelliJ平台上提高Flash专业开发者效率的利器,通过集成JSFL API,它将IDE的功能扩展到了Flash开发领域,为开发者带来无缝的开发体验。无论是新手还是经验丰富的开发者,都可以利用...

    JSFL导出元件滤镜配置

    在JavaScript for Flash (JSFL) 中,我们可以通过编写脚本来自动化Flash Professional的工作流程,包括导出元件、应用滤镜和配置这些滤镜。本话题主要关注如何使用JSFL导出元件及其滤镜设置,这对于批量处理动画或...

    批量发布fla(flash插件)

    代码看懂了,又找了些jsfl的教程看了看,于是决定扩展一下功能,写个flash插件出来,至少带个操作界面,用时方便,毕竟这个东东不只是我用。 这个flash插件功能很简单,能够批量发布一个或多个文件夹下的fla文件,...

    jsfl技术文档

    JSFL,全称为JavaScript for Flash,是Adobe提供的一个脚本语言,主要用于自动化Flash Professional(现更名为Adobe Animate)的工作流程、创建自定义工具以及编辑Flash项目。JSFL允许开发者深入到Flash软件的内部,...

    JSFL实用代码

    JSFL提供了对Flash文档(FLA)和Flash影片(SWF)的底层访问,允许开发者编写自定义工具、脚本或插件来提升效率。 在提供的压缩包中,包含了一系列的JSFL实用代码,这些代码适用于不同的场景,旨在帮助用户在Flash...

    Flash查找导出类.jsfl

    1、打开含有连接类的Flash源文件; 2、输入想要查找的文件名(支持关键字); 3、路径输出再Flash工作台

    jsfl:一些jsfl的操作,用于前端做flash使用

    4. **导出和发布**:了解如何使用JSFL脚本导出SWF、SVG或其他格式的文件,以及自定义发布设置。 5. **面板创建**:学习如何使用JSFL创建自定义的工作面板,提升工作流程效率。 6. **事件处理**:了解如何在JSFL中...

    flash 元件批量改名命令(jsfl)

    /////////////////////////////////// // //1、将文件另存为:RandomNameLibaray.jsfl //2、在flash中直接运行命令 // //////////////////////////////////

    Animate:用于Adobe Animate的Jsfl动画工具

    6. **插件开发**:对于高级用户,可以使用JsFL编写插件,这些插件可以扩展Animate的功能,满足特定需求。 7. **错误检查和调试**:JsFL还支持错误处理和调试,这对于优化和维护大型项目至关重要。 8. **版本控制**...

Global site tag (gtag.js) - Google Analytics