| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > Flash特别应用 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

Flash JSAPI 入门           

Flash JSAPI 入门

作者:佚名 来源:闪吧 作者: nbell 更新:2007-1-13 21:01:33 错误报告 我要投稿

Flash   JSAPI   入门(一)
翻译自前几个月macromedia发布的flash jsapi开发文档。和大家共享...



本文档要求熟悉JavaScript和Action   Script语法并知道最基本的函数,参数和数据类型的编程。同时也要求了解对象和属性的概念。可以参考Netscape   JavaScript文档。(::URL::http://developer.netscape.com/tech/javascript/index.html)

Macromedia   Flash   JavaScript   API(JSAPI)简介
Action   Script脚本是SWF文件在flash播放器里执行的语句。JSAPI是让你在flash开发环境,也就是打开flash程序时编写和执行的脚本。你可以写出命令和脚本行为,可以为工具栏添加工具。这些脚本能够帮助自动执行一些过程。
Flash   JSAPI类似DreamWeaver和Fireworks的JavaScript   API(基于Netscape   JavaScript   API)。Flash   JSAPI是基于DOM(Document   Object   Model),它可以让flash文档使用JS   对象。FLASH   JSAPI包括了所有JSAPI,并增加了Flash   DOM。增加的对象和方法属性将在以下文档介绍。你可以使用任何JS的元素,但只有对flash文档有意义的元素才会有效果。

你可以使用flash   MX   2004   或者你喜欢的文本编辑器来写FLASH   JS文件。如果你有FLASH   PROFESSIONAL这些文件就有了扩展名为JSFL的文件。如果你要使脚本在菜单的COMMANDS菜单下,把JSFL文件保存到如下类似目录:
C:\Documents   and   Settings\<user>\Local   Settings\   Application   Data\Macromedia\   Flash   MX2004\<language>\Configuration\Commands

JSFL增加的工具会被保存在TOOLS文件夹:
C:\Documents   and   Settings\<user>\Local   Settings\   Application   Data\Macromedia\   Flash   MX2004\<language>\Configuration\Tools

如果JSFL还有其他比如xml文件等,他们同样需要放置在相同的目录下。
你也可以选中历史面板中一个和多个命令行,把他们保存成JSFL文件。
通过COMMANDS菜单下运行脚本和EDIT目录下CUSTOMIZE   TOOL   PANEL增加工具。

你可以通过MMExecute()语句来把JSAPI命令嵌入AS文件中,该语句可以在mx2004的as字典中找到。可是,MMExecute()语句只是在flash程序中影响比如组件属性面板或者swf面板的相关元素。即使通过as调用JSAPI命令,它也不会影响在开发界面外的flash播放器。
JSAPI同时也包含了一些可以让你扩展使用js和c代码的方法。文章后面会有更多的介绍。
Flash   js对象包括属性和方法。属性,都被定义为最基本的数据类型,如布尔变量,整型,数组,浮点或者相关的数据形式,比如颜色,对象,点,矩形和字符串,用来描述对象。方法是对象的执行功能。为了使用对象的方法和属性,我们使用点符号。同样,大部分对象都有getPorperties和setPorperty,分别用来取得指定属性和设置指定属性。大部分方法有传递参数,用于方法的不同应用。

FLASH   DOM
Flash   JSAPI的DOM包涵了一组顶级函数和顶级flash对象。Flash对象一直可以被代码使用只要flash开发环境是打开的。当要指定该对象时,使用flash或者fl。举个例子,为了关闭所有的打开的文件,你可以使用如下语句:
Flash.closeAll();
Fl.closeAll();
Flash对象包括了以下子对象:
ComponentsPanel   使用fl.componentsPanel来指定componentsPanel对象,该对象指的是flash开发环境的组件对象面板。
Document   使用fl.documents得到一个已经打开的flash文档数组。使用fl.documents[index]来得到指定的文档,使用fl.getDocumentDOM()来得到目前激活的文档。
DrawingLayer   使用fl.drawingLayer来得到drawingLayer对象
Effect   使用fl.effects来得到flash打开后已经注册的效果描述的数组
Math   使用fl.Math来取得Math对象
OutputPanel   使用fl.outputPanel来得到outputPanel对象。该对象对应flash开发环境的输出面板。
Tools   fl.tools是一个包含了toolObjs属性的对象。ToolObjs属性是一个toolObjs对象数组。每一个toolObj对象都代表了flash工具栏的一个工具。
ToolObj   用fl.tools.toolObjs取得所有工具对象的数组。使用fl.tools.activeTool能够取得目前激活的工具对象。
XMLUI   使用fl.xmlui来取得一个XML用户界面对象。XMLUI对象提供了取得和设置XMLUI对话框的能力。

Document对象
一个顶级flash对象的属性就是documents属性。该documents属性是一个包括了目前在flash里面打开的文档的数组。每一个Document对象代表了fla文件包括的大部分元素。所以
DOM里面很大一部分是Document对象的子对象和属性。
指定第一个打开的flash文档,举个例子,使用fl.documents[0]。第一个文档指的是在flash开发环境下打开的第一个flash文档。当第一个flash文档被关闭后,其余的打开文档数组下标均递减。
寻找一个指定的文档的下标,使用fl.findDocumentIndex{nameOfDocument}
指定目前的打开的flash文档,使用fl.getDocumentDOM().
寻找特定的文档,在documents数组中检查每一个name属性。
在前面表里没有列出的所有DOM对象都是通过Document对象取得。比如,得到一个文档的library,你使用Document对象的library属性。它将得到library对象,fl.getDocumentDOM().library
为了得到library里面元素的数组,使用library的items属性,得到的数组里每一个元素都是一个Item对象。Fl.getDocumentDOM().library.items
为了得到一个特定的library里item,使用items数组的成员元素。Fl.getDocumentDOM().library.items[0]
换句话说,Library对象是Document对象的子对象,而Item对象是Library对象的子对象。

指定动作的目标
除非特别指明,方法都是对所选区和选中的对象执行的。举个例子,因为没有特别的对象指定,以下的脚本将是目前选取的区域尺寸放大一倍。Fl.getDocumentDOM().scaleSelection(2,2);
在一些情况下,你必须要对在flash文档选取特定元素执行动作。为了做到这一点,使用Document.selection得到的属性数组。该数组里面第一个元素表示了目前的选择元素,如下:
var   accDescription   =   fl.getDocumentDOM().selection[0].description;
一下的脚本将把所选区的第一个元素尺寸放大一倍。
Var   element   =   fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0];
If   (element){element.width=element.width*2;
Element.height   =   element.height*2}
你同样可以做类似的,浏览一遍场景中所有元素,并放大特定的数量的宽和高,如下:
var   elementArray=   fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements;
for   (var   I=0;   I<   elementArray.length;I++){
      var   offset=10;
      elementArray[i].width   +=offset;
      elementArray[i].height   +=offset;}

总结一下DOM结构
以下是FLASH   DOM简要结构,前面的数字代表了对象所在层。举个例子数字为3的对象是数字为2的对象的子对象,同样,它又是低于数字为1的对象。
在一些情况下,一些对象通过上级对象的指定属性得到。举个例子,Document.timelines属性包括了timeline的对象数组。可以参考如下的简介。最后要说的是,一些对象是其他对象的次级对象,而不是其他对象的子对象。一个是其他对象的次对象,有它自己的比上级对象增加的属性和方法。次级对象和上级对象在继承的时候是位于同一层的。举个例子,Item是BitmapItem的上级对象。以下简介:
01   Top-level   functions
01   flash   object
   02   componentsPanel   object
   02   Document   object   (fl.documents   array)
      03   Matrix   object
      03   Fill   object
      03   Stroke   object
      03   library   object
         04   Item   object   (library.items   array)10Flash   JavaScript   Dictionary
         04   BitmapItem   object   (subclass   of   Item   object)
         04   folderItem   object   (subclass   of   Item   object)
         04   fontItem   object   (subclass   of   Item   object)
         04   SoundItem   object   (subclass   of   Item   object)
         04   SymbolItem   object   (subclass   of   Item   object)   
         04   VideoItem   object   (subclass   of   Item   object)
      03   Timeline   object   (document.timelines   array)
         04   Layer   object   (timeline.layers   array)
            05   Frame   object   (layer.frames   array)
               06   Element   object   (frame.elements   array)
                  07   Matrix   object   (Element.matrix)
               06   Instance   object   (abstract   class,   subclass   of   Element   object)
               06   BitmapInstance   object   (subclass   of   Instance   object)06   CompiledClipInstance   object   (subclass   of   Instance   object)
               06   ComponentInstance   object   (subclass   of   SymbolInstance   object)
                  07   Parameter   object   (ComponentInstance.parameters)
               06   EmbeddedVideoInstance   object   (subclass   of   Instance   object)
               06   LinkedVideoInstance   object   (subclass   of   Instance   object)
               06   SymbolInstance   object   (subclass   of   Instance   object)
               06   Text   object   (subclass   of   Element   object)
                  07   TextRun   object   (text.textRuns   array)
                     08   TextAttrs   object   (textRun.textAttrs   array)
               06   Shape   object   (subclass   of   Element   object)
                  07   Contour   object   (shape.contours   array)
                     08   HalfEdge   object
                        09   Vertex   object
                        09   Edge   object
                  07   Edge   object   (shape.edges   array)
                     08   HalfEdge   object
                        09   Vertex   object
                        09   Edge   object
                  07   Vertex   object   (shape.vertices   array)
                     08   HalfEdge   object
                        09   Vertex   object
                        09   Edge   object
      03   ScreenOutline   object
         04   Screen   object   (screenOutline.screens   array)
            05   Parameter   object   (screen.parameters   array)
   02   drawingLayer   object
      03   Path   object
         04   Contour   object
   02   Effect   object   (fl.effects   array)
   02   Math   object
   02   outputPanel   object
   02   Tools   object   (fl.tools   array)
      03   ToolObj   object   (tools.toolObjs   array)
   02   XMLUI   object

待续

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。