Fireworks Extension —— 开发篇(Dom模型)
如上一篇博文所叙述的,一个很偶然的机会,我得知可以使用Javascript开发Fireworks插件,又注意到了视觉小伙伴的需求,于是便上手开发Fireworks Extension了。
很幸运的,在充斥着广告的搜素引擎中,我很快地发现已经有人撰写过关于Fireworks开发的教程。特此奉上链接 实战 Fireworks MX 插件开发指南,以免小伙伴们百度google之劳 。在此文中,作者很细致的讲解了Fireworks MX插架开发的步骤,按部就班地做下来,基本上你就可以写写简单的Fireworks插件了。但是,时光的飞逝总会为我们带来些变化,瞥见《实战 Fireworks MX 插件开发指南》的发布日期,2003年,那时候我应该还在学一元二次方程什么的东西,Fireworks也还没有被Adobe买下来。
本系列的文章,我会着重讲解Fireworks Extension开发中需要注意的东西,特别是一些《实战 Fireworks MX 插件开发指南》一文中没有提到的东西。
首先要给出的当然是Adobe那焕然一新的API接口。
和网页开发一样,开发Adobe插件的时候,第一个要了解的就是DOM模型。
在日常视觉工作中,我们编辑的每一个Fireworks文件称作Document。通过全局的fw对象,我们有两种方法访问到document对象。
方法一:
fw.documents[documentIndex];
通过这种方法,我们可以通过文档的序数访问到文档。
方法二:
fw.getDocumentDOM();
通过方法二,我们可以直接访问到当前激活的文件。
获取document之后,其实我们仅能操作该document当前page里面的东西。
fw.getDocumentDOM().changeCurrentPage(pageIndex);
通过changeCurrentPage方法,可以切换当前的page。在document对象中有一个pagesCount属性,返回page的总数。
在之后我们就可以访问到我们需要操作的各种object了。在Fireworks中,层文件夹也是一个element object, 你需要通过isLayer方法来判断元素是不是层。在document对象中,document.layers属性会储存所有document中的层对象的引用,无论怎么嵌套的层都可以在这个数组中直接遍历找到。
和获取document的方法类似,获取element也有两种方法。
方法一:
fw.selection[selectIndex];
方法二:
document.layers[layerIndex].elems[elementIndex];
两个函数的区别也和docment一样。
通过Firewokrs暴露出的接口,可以看到,Adobe更希望我们直接对dom进行操作,提供了两个直接获取当前文档和当前选中对象的函数。下一篇博文中我将进一步介绍Fireworks dom操作中的其他一些细节。
转发请注明出处:http://www.cnblogs.com/Arthus/p/3740542.html
Fireworks Extension —— 开发篇(Dom模型)的更多相关文章
- [java开发篇][dom模块] 遍历解析xml
http://blog.csdn.net/andie_guo/article/details/24844351 XML DOM节点树 XML DOM将XML文档作为树结构,树结构称为一个节点树.所有的 ...
- 【转载】MSXML应用总结 开发篇(上)
原文:http://blog.sina.com.cn/s/blog_48f93b530100ejv9.html 本篇是接前文“MSXML应用总结 概念篇”写的,主要总结一下MSXML DOM接口的应用 ...
- E8.Net工作流平台开发篇
E8.Net开发篇(一) E8.Net开发框架有哪些源程序模型? E8.Net开发框架为开发企业流程应用系统提供了最佳实践的开发架构.范例及源代码,包括待办事项的组织.流程启动模型.处理模型.母版 ...
- .NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发
上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明.不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该 ...
- 整理之DOM事件阶段、冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件
整理之DOM事件阶段 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的 ...
- 浏览器内核之 HTML 解释器和 DOM 模型
微信公众号:爱写bugger的阿拉斯加如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 此文章是我最近在看的[WebKit 技术内幕]一书的一些理解和做的笔记.而[WebKit 技术内幕]是基 ...
- ProBuilder快速原型开发技术 ---不规则模型与材质
ProBuilder开发模型的强大之处,还在于可以按照要求精确定制不规则模型.克隆镜像模型.给模型着色以及添加材质等,下面笔者就这几方面进行讲解. 一:定制不规则模型 PB有一个专门定制不规则模型的功 ...
- 华清远见金牌讲师名家大讲堂Android开发篇成功举办
2014年3月5日.12日华清远见金牌讲师名家大讲堂(以下简称名家大讲堂)在线讲座全新升级开讲,至此拉开了新一年名家大讲堂的序幕! 华清远见名家大讲堂作为业内颇具影响力的公益免 费线上课程,自2009 ...
- 开年钜献:华清远见金牌讲师名家大讲堂(Android开发篇)
华清远见作为嵌入式培训领导品牌,嵌入式就业课程已成为业内公认的专业人才培养体系!华清远见致力于让更多嵌入式技术爱好者及在校大学生获得一线嵌入式系统开发关键技术应用的经验,于2009年始开办名家 ...
随机推荐
- java中输入方式Scanner和BufferedReader
Scanner 在java.util包中,需要引入时可以用import java.util.*;或者import java.util.Scanner; 工作原理:通过new创建一个Scanner对象, ...
- oracle防火墙端口问题
Oracle服务端口方面会有很多的问题,下面就将为您介绍在防火墙上开放Oracle服务端口的方法,希望对您学习Oracle服务端口方面能有所帮助. 要使Oracle客户端能正常连接到设置有防火墙的安装 ...
- 3D效果导航代码
*, *:before, *:after { padding:; margin:; box-sizing: border-box; } .menu { list-style: none; width: ...
- Java中Timer的用法--转载之网络
用法很简单,new一个timer,然后写一个timertask的子类即可. import java.util.Timer; import java.util.TimerTask; public cla ...
- Git Push 不用再次输入用户名和密码方法
前言 在大家使用github的过程中,一定会碰到这样一种情况,就是每次要push 和pull时总是要输入github的账号和密码,这样不仅浪费了大量的时间且降低了工作效率.在此背景下,本文在网上找了两 ...
- 用endsWith()来限制图片的后缀名
var a=document.getElementById('file-name'); var filename=a.value if(!a.endsWith('.jpg')||!a.endsWith ...
- 用js代码判断是否IE浏览器
判断是否IE的方法: var isIE = function(ver) { var div = document.createElement("div"), status; div ...
- angularjs 创建自定义的指令
创建自定义的指令 除了 AngularJS 内置的指令外,我们还可以创建自定义指令. 你可以使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTMl 元素上需要添加自定义指令名 ...
- @余凯_西二旗民工 【SVM之菜鸟实现】—5步SVM
#翻译#了下 余凯老师的 心法 以前的一篇博文:二分类SVM方法Matlab实现 前几日实现了下,虽然说是Linear-SVM,但是只要可以有映射函数也可以做kernel-svm function [ ...
- [Angular 2] Mapping Streams to Values to Affect State
While you have multiple streams flowing into your scan operator, you'll need to map each stream to t ...