1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改。

2:利用swf反编译工具,这里推荐 硕思闪客精灵(SWFDecompiler),保存SWFDecompiler反编译过的.fla文件。

3:利用falsh制作工具(如Adobe Flash Professional CS5),打开此fla文件,找到第3个帧,添加下列代码即可实现定制(具体说明可以参考附后资料,隐藏即false,显示即true,请根据需要自行修改):

gMainView.showUIElement("PrevNext", true);

gMainView.showUIElement("Print", false);

gMainView.showUIElement("Find", true);

gMainView.showUIElement("Tool", false);

gMainView.showUIElement("Pop", false);

gMainView.showUIElement("Zoom", true);

gMainView.showUIElement("Page", true);

gMainView.showUIElement("Overflow", true);

4:将修改过的fla导出为swf文件,命名为DefaultViewer2.swf,找到FlashPaper的安装路径X:\Program Files\Macromedia\FlashPaper 2\Interface,覆盖下面的swf文件即可。

即完成swf的自定制。

页面展示部分:

如果直接在页面上展示swf文件,那么有点IT常识的人依旧可以在客户端通过迅雷等软件捕获swf文件,然后下载下来,这样依旧不能保护swf文件。在这里我的解决方法是利用一个空swf文件来加载你需要展示的swf文件,这样即使swf被捕获也只能捕获到这个空swf文件。而且,切记空swf需要加密的,否则被反编译后依旧很容易找到你的展示文件。

属性摘要

属性

说明

documentPath:String

FlashPaper文件的路径.

borderThickness:Number

边框宽度.

borderColor:String

边框颜色.

UIElements:Object

外观元素的可见性.

currentZoom:Object

默认缩放比例.

width:Number

FlashPaper文件的宽度.

height:Number

FlashPaper文件的高度.

UIElements属性的图示

事件摘要

事件

说明

onLoadStart = function(target:FlashPaper, type:String) {}

当FlashPape文件已开始下载文件时调用.

onLoadProgress = function(target:FlashPaper, type:String, bytesLoaded:Number, bytesTotal:Number) {}

每当FlashPape文件写入硬盘时调用.

onLoadComplete = function(target:FlashPaper, type:String) {}

当FlashPape文件完全下载时调用.

onLoadInit = function(target:FlashPaper, type:String) {}

当执行FlashPape文件第一帧上的动作时调用.

onLoadError = function(target:FlashPaper, type:String, errorCode:String) {}

当FlashPape文件未能加载时调用.

onDisplay = function(target:FlashPaper, type:String) {}

当FlashPape文件已经显示时调用.

onUnload = function(target:FlashPaper, type:String) {}

当卸载FlashPape文件时调用.

onPageChanged = function(target:FlashPaper, type:String, newPageNumber:Number) {}

当FlashPape文件翻页时调用.

onZoomChanged = function(target:FlashPaper, type:String, percent:Number) {}

当FlashPape文件缩放时调用.

onSelection = function(target:FlashPaper, type:String) {}

当FlashPape文件的文字被选择时调用.

onToolChanged = function(target:FlashPaper, type:String, newTool:String) {}

当更换FlashPape文件的工具时调用.

onEnableScrolling = function(target:FlashPaper, type:String, enable:Boolean) {}

当FlashPape文件滚动时调用.

onVisibleAreaChanged = function(target:FlashPaper, type:String) {}

当FlashPape文件的哭件区域变化时调用.

方法摘要

方法

说明

load(path:String) : Void

载入一个FlashPape文件.

destroy() : Void

卸载FlashPape文件.

move(x:Number, y:Number) : Void

移动FlashPape组件).

toString() : String

返回组件的名称.

getIFlashPaper() : FlashPaper.IFlashPaper

返回一个实现IFlashPaper接口的对象.
如果这个函数未定义,那么载入的SWF文件不是一个FlashPaper 2.0文件.
如果这个函数存在,但是返回null或undefined,那么载入的SWF文件是一个FlashPaper 2.0文件,但是还没有载入足够的内容去实现这个API;你必须等待载入足够的内容并且再次调用它.

getViewerType() : String

返回一个描述包含SWF文件的接口的类型的字符串.
这个Macromedia FlashPaper标准阅读器总是返回Macromedia FlashPaper Default Viewer.

getViewerVersion() : Number

返回一个标识这个文件接口版本代号整数.
返回的整数不是连续的,但是这个整数显示阅读器最近的版本 ,而且可以显示除错或增强的功能.
比如FlashPaper 2.01返回 218.

getCurrentPage() : Number

返回当前页数(与工具栏显示的相同).第一页是1.

setCurrentPage(pageNumber:Number) : Void

设置当前页数.需要保证此页是可显示的,但不必调节缩放.

getNumberOfPages() : Number

返回文件总页数.
注意: 也许不是所有的页都是可显示的, 屈就于连接速度.

getLoadedPages() : Number

返回当前载入的页数(可显示的).
这个数值一定在0到getNumberOfPages()之间.

getLoadedPages() == getNumberOfPages()

时,这个文件便完全载入.

showUIElement(part:String, flag:Boolean) : Void

应藏或者显示FlashPaper文件外观的部件.区分大小写:

"PrevNext" 前一页和后一页按钮的隐藏或显示.
注意: 如果这些按钮是隐藏的,当前页文字框回失效,但不会隐藏.

"Print" 打印按钮的隐藏或显示.

"Tool"所有工具选择按钮的隐藏或显示.

"Zoom" 所有所放控制按钮的隐藏或显示.

"Find"文字搜索框的隐藏或显示.

"Pop" 在浏览器中打开文件按钮的隐藏或显示.

"Sidebar"边框 (显示文件边框)按钮的隐藏或显示.
注意: 这个变量无论这个文件是否包括边框i; 没有边框的文件从不显示边框按钮.

"Page" 当前页和总页数按钮的隐藏或显示

"Overflow" 超出菜单的隐藏或显示.
注意:这个菜单仅在工具条太狭窄而不能显示时;你不能用这个变量强制显示超出菜单.

"ZoomKeys" 这个参数不影响外观;他控制是否能用快捷键所放文件(例如, +, -, p, w).

"Brand" 品牌按钮的隐藏或显示.[注:此属性设置false也无法隐藏左上角FlashPaper的标志,估计是因为Adobe不太希望自己的标志被隐藏,既然这样,不知道这个Brand还存在于API中还有什么意义]

"Close" 关闭按钮的隐藏或显示.

traceUIElements() : Void

输出UI Elements的可见性.

printTheDocument() : Boolean

模仿用户单击答应按钮. 在调用函数前,文件必须完全载入.

getCurrentZoom() : Number

返回当前缩放水平.
注意: 缩放水平总是返回一个数值r;不会返回页面宽度.

setCurrentZoom(percent:Object) : Void

设置当前缩放水平.你可以传入一个数值指示所放百分比 (例如, 100表示100%)..你也可以传入一个字符串 "width"适合页面宽度,或者传入字符串 "page"适合到页.

setSize(w:Number, h:Number) : Boolean

设置组件的显示排列,单位是象素.
如果成功设置则返回true,不成功则返回false.

goToLinkTarget(linktarget:String, window:Object) : Void

触发锚点或URL连接请求.
如果传入的字符串是锚点名称:foo,当前视图会移动到那个锚点.window参数会被忽视.如果foo不是一个有效的锚点名称,则不会执行动作.对于其它的字符串,会执行getURL(linktarget, window) (想了解更多的信息,请见ActionScript文档).

enableScrolling(flag:Boolean) : Boolean

阻止用户滚动文件.当滚动被禁止时:

滚动条不可用,但是可见.
滚动按钮不可用.
使用鼠标滚轮滚动不可用.

getCurrentTool() : String

返回当前活动的工具.如果没有活动的工具,则返回空字符串.以下是现在支持的值:

"" (没有工具)
"pan" (手形工具)
"select" (文字选择工具)

setCurrentTool(tool:String) : Boolean

设置活动工具.如果参数错误或者该工具不可用则返回false.以下是现在支持的值:

"" (没有工具)
"pan" (手形工具)
"select" (文字选择工具)

getTextSelectionRange() : FlashPaper.SelectionRange

返回一个描述当前选择文字的对象.如果没有选择文字,则返回null.
注意:与getVisibleArea()返回的对象不同,这个函数总是返回一个FlashPaper.SelectionRange,这是一个明确定义的对象, 你可以检查,分解或者构造一个新的对象.

setTextSelectionRange(sel:FlashPaper.SelectionRange, skipBroadcast:Boolean) : Void

选择特定的文字.你可以传入null,从而取消选定所有的文字.无效的范围(没有页面)会被省略(它允许你设定范围从0到一个很大的数,例如999999,从而选定所有文档).如果skipBroadcast是false (或未定义), 会广播onVisibleAreaChanged(). 如果skipBroadcast是true, 则不会广播onVisibleAreaChanged().
注意:与getVisibleArea()返回的对象不同,这个函数总是返回一个FlashPaper.SelectionRange,这是一个明确定义的对象, 你可以检查,分解或者构造一个新的对象.

getSelectedText() : String

以Unicode编码的字符串返回选择的文字.如果每有被选择的文字,会返回空字符串.

getSidebarWidth() : Number

返回其他按钮的宽度.
没有边框的文件会返回0.

setSidebarWidth(w:Number) : Void

设置其他按钮的宽度.
传入0从而完全隐藏其他按钮.
没有边框的文件会忽视调用.

getFindText() : String

以Unicode编码的字符串返回查找的文字.

setFindText(s:String) : Void

设置文字查找框的文字.
这个函数不会执行查找操作或改变当前选择.

findNext() : Boolean

查找文字查找框中输入的文字.
从当前选择文字的后面开始查找.
要从文档的开头查找,请先调用setSelectionRange(null).
如果找到了文字,调用getTextSelectionRange()返回详细的范围.

getVisibleArea() : Object

返回描述文档当前可见区域的对象.返回的对象有如下作用:

传入setVisibleArea().
这个可以用来在不同的计算机上观看同一文档,而且可以保持同步.

与先前getVisibleArea()返回的对象进行比较,测试可见区域是否改变.

返回的对象应该被认为是封闭的数据结构.不要试图分解返回的对象,因为在将来的版本中内容的格式可能不同.
这个对象唯一不变的方法是:

function equals(that:Object):Boolean;

我们可以用它比较两个可见区域是否相同.

setVisibleArea(area:Object, skipBroadcast:Boolean) : Void

调节当前可见的页/缩放/滚动从而匹配给定的区域对象.
如果skipBroadcast是false (或未定义), 会广播onVisibleAreaChanged().如果skipBroadcast是true, 则不会广播onVisibleAreaChanged().
传入的对象必须是先前由getVisibleArea返回的对象.
不要试图创建你自己的对象,因为在将来的版本中内容的格式可能不同.

转载:http://szjazz.blog.163.com/blog/static/35133021201211230455321/

定制个性化的FlashPaper生成的文件的更多相关文章

  1. Taro 2.2 全面插件化,支持拓展和定制个性化功能

    自 2.2 开始,Taro 引入了插件化机制,允许开发者通过编写插件的方式来为 Taro 拓展更多功能或者为自身业务定制个性化功能,欢迎大家进行尝试,共同讨论~ 当前版本 2.2.1 官方插件 Tar ...

  2. bootstrap 中是通过写less文件来生成css文件,用什么工具来编写呢?

    bootstrap 中是通过写less文件来生成css文件,用什么工具来编写呢? 如果用sublime的话如何实现代码保存后浏览器刷新成最新的代码样式? 或者有什么其他好用的工具? 从网上找了很多方法 ...

  3. 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件

    1       先决条件 1.1    已安装JDK(版本1.5以上)并配置环境变量 到http://java.sun.com上下载JDK,配置环境变量(我的电脑右键->属性->高级-&g ...

  4. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

  5. 将Mat类型坐标数据生成pts文件

    前言 获取人脸特征点的坐标信息之后,想要将坐标信息shape保存为pts/asf/txt等文件格式,本文就对此进行实现. 实现过程 1.确定pts文件的书写格式: 以要生成的文件为例,书写格式如下: ...

  6. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  7. SQL*Plus生成html文件

    最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急.好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件?   ...

  8. vim保存文件时,生成.un~文件

    在用vim保存文件时,文件夹下生成.un~文件 怎么删除这些文件呢 在网上搜索的答案: http://stackoverflow.com/questions/15660669/what-is-a-un ...

  9. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

随机推荐

  1. 收缩Oracle数据文件

    最近有网友提到收缩Oracle数据文件的问题,这是DBA经常碰到的一个常见问题.通常我们需要收缩相应的数据文件以减少来自磁盘空间的压力以及提高数据库的整体性能.但这并非对于所有情形都是适用的,尤其是生 ...

  2. PHP中基本符号及使用方法

    注解符号:这个#还真很少用,能和shell通用还真不错呢. //,  # 单行注解多行注解 引号的使用 ' ' 单引号,没有任何意义,不经任何处理直接拿过来;" "双引号,php动 ...

  3. Codeforces Round #218 (Div. 2) C题

    C. Hamburgers time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  4. Java中的OutOfMemoryError的各种情况及解决和JVM内存结构

    在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存) [3]和Native(本地内存). [1] 堆内存是运行时分配所有类实例和数组的一块内存区域.非堆内存包含方法区和JVM内部 ...

  5. 插入排序 --- 排序算法 --- 算法 --- java

    设数组为a[0…n-1]. 1.      初始时,a[0]自成1个有序区,无序区为a[1..n-1].令i=1 2.      将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间 ...

  6. javascript注意点(1)

    1.void运算符 ECMAScript 262规范,关于void说明如下: The void Operator The production UnaryExpression : void Unary ...

  7. spring初探1

    spring初探1 关于新建对象,对象依赖的三种方式比较 场景 某个交易的业务组建拆分,为原先的功能模块新写了一个业务组件 使用new. 修改上层代码的对象生成部分( 如果不是面向接口编程,简直就是灾 ...

  8. 【LeetCode】27 - Remove Element

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  9. 【LeetCode】83 - Remove Duplicates from Sorted Array

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  10. Spring Boot 学习笔记 - 认识Spring Boot框架

    因各种原因,.NET前端工程师重新接触JAVA,真是向全栈的路上又迈出了无奈的一步. 下面正文: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初 ...