JSFL(Adobe Flash JavaScript API )

2010-08-18 17:37:35

<p>【转载】 <a target=&#34;_blank&#34; href=&#34;http://flash.9ria.com/viewthread.php?tid=19760&amp;amp;highlight=jsfl&#34;>http://flash.9ria.com/viewthread.php?tid=19760&amp;amp;highlight=jsfl</a></p> <p><strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong> 确却的说就是<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>Adobe</span> Flash <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>Java</span>Script <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>API</span> 。<br /> 我们在<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>flash</span>里的可视化编程基本由这些接口完成。<br /> 功能很强大,只要你熟悉了它,你就可以自己扩展flash ide给他添加工具面板,创作自己的工具,新建一些命令处理来完成自己想处理的事情等。<br /> 形象点说,你如果用过早期的pv3d的话一定不会对那是pv3d的<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>组件</span>陌生的。其实pv3d的组件在创作中也运用到了<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong> 脚本去实现了很多在flash ide里的窗口功能<br /> 或者说你如果用过asv5或者asv6这款破解软件的话,不知道你是否知道,他的还原原理其实就是生成堆<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong><span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>文件</span>脚本文件来还原fla文件,对,或者应该说创建比较合适。可以这么说,任何你能手动在flash操作的步骤都可以用<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>脚本来是实现。<br /> <br /> 好了下边先让大家认识先<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>的类库吧;<br /> <strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>类库里提供了接近50个<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>对象</span>跟接近20个顶级方法。具体的你可以打开flash帮助的flash扩展一章。里边有详细的解说<br /> <br /> 全局方法<br /> 可从任何 JavaScript API 脚本<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>调用</span>以下方法:<br /> <br /> alert()<br /> confirm()<br /> prompt()<br /> <br /> <br /> 时间轴特效<br /> 下列函数专用于时间轴特效:<br /> <br /> configureEffect()<br /> executeEffect()<br /> removeEffect()<br /> <br /> <br /> 可扩展工具<br /> 在创建可扩展工具的脚本中,可调用以下函数:<br /> <br /> activate()<br /> configureTool()<br /> deactivate()<br /> keyDown()<br /> keyUp()<br /> mouseDoubleClick()<br /> mouseDown()<br /> mouseMove()<br /> mouseUp()<br /> notifySettingsChanged()<br /> setCursor()<br /> <br /> 对象<br /> 描述<br /> <br /> actionsPanel 对象<br /> actionsPanel 对象表示当前显示的&amp;quot;动作&amp;quot;面板。<br /> <br /> <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>Bitmap</span>Instance 对象<br /> BitmapInstance 对象是 Instance 对象的子类,它表示帧中的一个<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>位图</span>。<br /> <br /> BitmapItem 对象<br /> 一个 BitmapItem 对象是文档库中的一个位图。BitmapItem 对象是 Item 对象的子类。<br /> <br /> CompiledClipInstance 对象<br /> CompiledClipInstance 对象是 Instance 对象的子类。<br /> <br /> compilerErrors 对象<br /> compilerErrors 对象表示&amp;quot;<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>编译</span>器错误&amp;quot;面板,它是 flash 对象 (fl) 的一个属性,可以通过 fl.compilerErrors 访问。 <br /> <br /> ComponentInstance 对象<br /> ComponentInstance 对象是 SymbolInstance 对象的子类,表示帧中的一个组件。<br /> <br /> componentsPanel 对象<br /> componentsPanel 对象表示&amp;quot;组件&amp;quot;面板,它是 flash 对象 (fl) 的一个属性,可以通过 fl.componentsPanel 访问。<br /> <br /> Contour 对象<br /> Contour 对象表示由形状边界上的半边缘组成的封闭路径。<br /> <br /> Document 对象<br /> Document 对象表示舞台。<br /> <br /> drawingLayer 对象<br /> drawingLayer 对象可以从 JavaScript 作为 flash 对象的子对象访问。<br /> <br /> Edge 对象<br /> Edge 对象表示舞台上一个形状的边缘。<br /> <br /> Effect 对象<br /> Effect 对象表示时间轴特效的一个实例。<br /> <br /> Element 对象<br /> 出现在舞台上的所有对象都是 Element 类型。<br /> <br /> Fill 对象<br /> Fill 对象包含&amp;quot;工具&amp;quot;面板或某一选定形状的填充颜色设置的所有属性。<br /> <br /> Filter 对象<br /> Filter 对象包含有所有滤镜的全部属性。<br /> <br /> flash 对象 (fl)<br /> flash 对象表示 Flash <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>应用</span><span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>程序</span>。<br /> <br /> FLfile 对象<br /> FLfile 对象允许您编写可对本地文件系统中的文件和文件夹进行访问、修改和删除的 Flash 扩展。<br /> <br /> folderItem 对象<br /> folderItem 对象是 Item 对象的子类。<br /> <br /> fontItem 对象<br /> fontItem 对象是 Item 对象的子类。<br /> <br /> Frame 对象<br /> Frame 对象表示图层中的帧。<br /> <br /> HalfEdge 对象<br /> Shape 对象的边缘的有向侧。<br /> <br /> Instance 对象<br /> Instance 对象是 Element 对象的子类。<br /> <br /> Item 对象<br /> Item 对象是一种抽象基类。<br /> <br /> Layer 对象<br /> Layer 对象表示时间轴中的图层。<br /> <br /> library 对象<br /> library 对象表示&amp;quot;库&amp;quot;面板。<br /> <br /> Math 对象<br /> Math 对象可用作 flash 对象的只读属性;请参阅 fl.Math。<br /> <br /> Matrix 对象<br /> Matrix 对象表示一个变形矩阵。<br /> <br /> outputPanel 对象<br /> outputPanel 对象表示&amp;quot;输出&amp;quot;面板,它用来显示语法错误等疑难解答信息。<br /> <br /> Oval 对象<br /> Oval 对象是使用椭圆工具绘制的形状。若要确定一个项目是否为 Rectangle 对象,请使用 shape.isOvalObject。<br /> <br /> Parameter 对象<br /> 从 screen.parameters <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>数组</span>(对应于 Flash 创作工具中的屏幕&amp;quot;属性&amp;quot;检查器)或者通过 componentInstance.parameters 数组(对应于创作工具中的组件&amp;quot;属性&amp;quot;检查器)来访问 Parameter 对象类型。<br /> <br /> Path 对象<br /> Path 对象定义线段(直线、曲线或两者)的序列,通常在创建可扩展工具时使用。<br /> <br /> Project 对象<br /> Project 对象表示一个 Flash 项目 (FLP) 文件。<br /> <br /> ProjectItem 对象<br /> ProjectItem 对象表示一个已添加到项目中的项(磁盘上的文件)。<br /> <br /> Rectangle 对象<br /> Rectangle 对象是使用&amp;quot;矩形&amp;quot;工具绘制的形状。若要确定一个项目是否为 Rectangle 对象,请使用 shape.isRectangleObject。<br /> <br /> Screen 对象<br /> Screen 对象表示幻灯片或表单文档中的单个屏幕。<br /> <br /> ScreenOutline 对象<br /> ScreenOutline 对象表示幻灯片或表单文档中的一组屏幕。<br /> <br /> Shape 对象<br /> Shape 对象是 Element 对象的子类。当在舞台上操作或创建几何形状时,Shape 对象提供的控制比绘图 API 提供的控制更精确。<br /> <br /> SoundItem 对象<br /> SoundItem 对象是 Item 对象的子类。它表示一个用于创建声音的库项目。<br /> <br /> Stroke 对象<br /> Stroke 对象包含笔触的所有设置(包括自定义设置)。<br /> <br /> SymbolInstance 对象<br /> SymbolInstance 对象是 Instance 对象的子类,它表示帧中的一个元件。<br /> <br /> SymbolItem 对象<br /> SymbolItem 对象是 Item 对象的子类。<br /> <br /> Text 对象<br /> Text 对象表示文档中单独的文本项。<br /> <br /> TextAttrs 对象<br /> TextAttrs 对象包含能应用于部分选定的文本的所有属性。此对象是 Text 对象的子类。<br /> <br /> TextRun 对象<br /> TextRun 对象表示一串字符,其属性与 TextAttrs 对象中的所有属性相匹配。<br /> <br /> Timeline 对象<br /> Timeline 对象表示 Flash 时间轴,可通过 fl.getDocumentDOM().getTimeline() 访问当前文档的时间轴。<br /> <br /> ToolObj 对象<br /> 一个 ToolObj 对象表示&amp;quot;工具&amp;quot;面板中的单个工具。<br /> <br /> Tools 对象<br /> 可从 Flash 对象 (fl.tools) 访问 Tools 对象。<br /> <br /> Vertex 对象<br /> Vertex 对象是形状<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>数据</span>结构中保存坐标数据的部分。<br /> <br /> VideoItem 对象<br /> VideoItem 对象是 Item 对象的子类。<br /> <br /> <span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>XML</span>UI 对象<br /> XMLUI 对象能够获取和设置 XMLUI 对话框的属性,并能接受或取消其中的某个功能。<br /> <br /> 一般的说我们常用到的作对象一般为 flash 对象 (fl),Frame 对象,Layer 对象,Instance 对象,library 对象,Item 对象,outputPanel 对象等<br /> <br /> <br /> 先来个hello word&amp;nbsp;&amp;nbsp;吧&amp;nbsp;&amp;nbsp;<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>中输出的方法有2个 fl.<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>trace</span>() 跟 outputPanel.trace() ;<br /> 步骤1:<br /> 新建一个 <strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>文件 然后 往里边写</p> <div class=&#34;blockcode&#34;> <div id=&#34;code0&#34;> <ol> <li>fl.trace(&#39;hello <strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong> !&#39;)</li> </ol> </div> <em onclick=&#34;copycode($(&#39;code0&#39;));&#34;>复制代码</em></div> <p>步骤2:<br /> 看到flash上方有一个绿色的箭头没有,没错,按下它就会执行了。<br /> 要清除输出内容我们要用到对象的一个方法 clear();</p> <div class=&#34;blockcode&#34;> <div id=&#34;code1&#34;> <ol> <li>outputPanel.clear()</li> </ol> </div> <em onclick=&#34;copycode($(&#39;code1&#39;));&#34;>复制代码</em></div> <p>因为我们是扩展flash所以我们还可以或者直接输出的内容保存到本地<br /> 可以这样做;<br /> outputPanel.save(&#39;file:///c:log.txt&#39;)<br /> 我们可以选择吧<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>文件保存为命令,方便以后我们在命令菜单里调用,按crtl+s默认保存路径就可以了,当然我们也可以自己写包,但那样的话我们还需要用到<br /> 高级点的编程技巧,像fl.runScript()<br /> fl.runScript(&amp;quot;file:///C|/testScript.<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>&amp;quot;, &amp;quot;testFunct&amp;quot;, 10, 1);<br /> 执行c盘目录下的testScript.<strong><span style=&#34;color: rgb(255, 0, 0);&#34;>jsfl</span></strong>脚本的testFunct方法并把<span onclick=&#34;tagshow(event)&#34; class=&#34;t_tag&#34;>参数</span>传递过去;<br /> <br /> 还有一个高级编程里经常用到的方法MMexecute()<br /> MMExecute(&amp;quot;Flash JavaScript API command;&amp;quot;:String) : String<br /> 这个可以说是整个&amp;ldquo;文档对象模型 (DOM)&amp;rdquo;的核心体现。<br /> <br /> 文档对象模型(DOM)简单的说就是把你的脚本文件转化为可执行命令行。也就是把字符串转成可执行命令行<br /> 。,它之所以强大在于你可以在程序里敲入一段字符串形式的代码,然后让他直接执行。当然了如果你是在as文件里敲的话要注意一点,如果你要执行的字符串脚 本里包含有字符串就要多加一层引号才行,不要认为MMExecute的参数已经给了个引号下边的字符串脚本就不需要给,那样往往是出错的原</p>