flexpaper二次开发
1.首先下载FlexPaper的源码。下载地址
2.本人不懂flash,只是百度下,然后自己瞎弄弄的。我用的flash build 4.5
提供个key:1499-4181-9296-6452-2998-3656
首先在flash build中新建一个flex项目,第一步填写项目名称-flexpaper,第二步直接默认,最后一步需要注意下。
选择合并到代码中,要不然你的bin-debug目录下面会出现很多其他的swf文件
然后把你1步下载下来的源码解压。
把这三个目录全部复制到你刚才建立的flex项目根目录下。最后结果是这样的:
然后点击项目的属性,将附加的编译参数修改成如下所示,-source-path=locale/{locale}
菜单栏中文显示:
右键项目--->属性---->Flex编译器--->在附加的编译器参数框里加入下面一句:-locale zh_CN -source-path=locale/{locale} -keep-all-type-selectors=true即可。
我记得这些全部完成以后,好像有个文件一处会有错误,如果出错文件前面会有个红×,右键项目属性,选择Flex编译器,勾选“使用Flex 3 兼容模式”
修改:
1.右上角有一个FP,点击以后出现about
找到如下所示的文件:
打开,搜索bttnInfo,一共就三句,全部注释掉。然后在run,就会发现右上角的FP没了。(print也是在这个文件里面修改的,大家自己看看吧)
2.修改右下角的logo,如下
找到如下文件,打开,找到createDisplayContainer这个函数。在addChild(_skinImgDo);后面加入_skinImgDo.visible = false;(虽然不懂,但是这些看看也都能知道个大概)
好了。修改完毕。至于其他的修改,大家可以自己看看源文件。反正功能老外都帮我们现实了,我们只要修修改改而已。
补充一点,如果想用,入下图:
找到项目bin-debug下面的flexpaper.swf。(其他的swf就是我之前没有合并到代码中的那些swf,如果没有合并的需要把这些swf文件全部一起拷贝)
放在你下载回来的例子中,替换如下:
把刚才的文件改成这个名字就OK了。然后在运行就会发现可以了。
上面的方法似乎是把flash已经写死了,下面的这种方法编译出来的swf应该是可以动态加载flash的。(从网上找到的)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:fp="com.devaldi.controls.flexpaper.*"
layout="absolute" width="100%" height="100%"
applicationComplete="initApp();"> <mx:Script>
<![CDATA[
import mx.controls.Alert; public var _aid = 0;//文档ID [Bindable]
public var _Scale:Number = 1;//缩放比例 [Bindable]
public var _SwfFile:String = "";//SWF文件路径 [Bindable]
public var _ZoomTransition:String = "easeOut"; [Bindable]
public var _ZoomTime:Number = 0.6; [Bindable]
public var _ZoomInterval:Number = 0.1; [Bindable]
public var _FitPageOnLoad:Boolean = false;//加载后适合高度 [Bindable]
public var _FitWidthOnLoad:Boolean = false;//加载后适合宽度 [Bindable]
public var _PrintEnabled:Boolean = true;//是否支持打印 [Bindable]
public var _FullScreenAsMaxWindow:Boolean = false;//是否支付全屏 [Bindable]
public var _ProgressiveLoading:Boolean = false;//是否延迟加载 [Bindable]
public var _localeChain:String = "zh_CN";//语言 private var isFocus:Boolean = false; //初始化参数
private function initApp():void{
var params:Object = Application.application.parameters;
_Scale = getNumber(params, "Scale", 1);
_SwfFile = getString(params, "SwfFile", "Paper.swf");
_ZoomTransition = getString(params, "ZoomTransition", "easeOut");
_ZoomTime = getNumber(params, "ZoomTime", 0.6);
_ZoomInterval = getNumber(params, "ZoomInterval", 0.1);
_FitPageOnLoad = getBoolean(params, "FitPageOnLoad", false);
_FitWidthOnLoad = getBoolean(params, "FitWidthOnLoad", false);
_PrintEnabled = getBoolean(params, "PrintEnabled", true);
_FullScreenAsMaxWindow = getBoolean(params, "FullScreenAsMaxWindow", false);
_ProgressiveLoading = getBoolean(params, "ProgressiveLoading", true);
_localeChain = params["localeChain"]; //注册事件监听
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); //开放给外部(javascript)调用
ExternalInterface.addCallback("hasFocus", hasFocus);
//ExternalInterface.addCallback("focus", focus);
ExternalInterface.addCallback("setViewerFocus", setViewerFocus);
} private function onMouseOver(event:MouseEvent):void{
this.isFocus = true;
} private function onMouseOut(event:MouseEvent):void{
this.isFocus = false;
} public function hasFocus():Boolean{
//Alert.show("hasFocus");
return isFocus;
} public function setViewerFocus(isFocus:Boolean):void{
//Alert.show("setViewerFocus");
this.paperViewer.setViewerFocus();
} /**
*
* 获取String类型参数
* 如果没有,则返回默认值
**/
private function getString(params:Object, name:String, def:String):String{
if(params[name] != null){
return params[name];
}
return def;
} private function getNumber(params:Object, name:String, def:Number):Number{
if(params[name] != null){
return params[name];
}
return def;
} private function getBoolean(params:Object, name:String, def:Boolean):Boolean{
//Alert.show("比较:"+name);
if(params[name] != null){
return params[name] == "true";
}
return def;
}
]]>
</mx:Script>
<!--mx:Panel x="165" y="76" width="250" height="200" layout="absolute" title="一个人">
<mx:Label x="59" y="37" text="{Scale}" width="88"/>
</mx:Panel--> <fp:FlexPaperViewer id="paperViewer"
width="100%"
height="100%"
Scale="{_Scale}"
SwfFile="{_SwfFile}"
ZoomTransition="{_ZoomTransition}"
ZoomTime="{_ZoomTime}"
ZoomInterval="{_ZoomInterval}"
FitPageOnLoad="{_FitPageOnLoad}"
FitWidthOnLoad="{_FitWidthOnLoad}"
PrintEnabled="{_PrintEnabled}"
FullScreenAsMaxWindow="{_FullScreenAsMaxWindow}"
ProgressiveLoading="{_ProgressiveLoading}" />
</mx:Application>
但是按照上述方法试了下,就无法调用官方提供的API接口了。原因是上述的程序并没有提供接口(接口在FlexPaperViewer_Base.mxml)这个文件中
只需要加入如下的语句,就可以调用gotoPage接口了
public function gotoPage(p:Number):void{
paperViewer.gotoPage(p);
}
别忘了增加一句监听,给js调用
ExternalInterface.addCallback("gotoPage", gotoPage);
到此OK。编译出来的可以加载API了。
添加打印:
增加一句监听,给js调用
ExternalInterface.addCallback("printPaper", printPaper);
public function printPaper():void{
paperViewer.printPaper();
}
修改FlexPaperViewer.mxml
click="printPaper(event)" 为click="printPaper()"
修改FlexPaperViewer_Base.mxml
public function printPaper(e:Event):void{...}为public function printPaper():void{...}
flexpaper二次开发的更多相关文章
- FlexPaper二次开发问题及搜索高亮显示
原文:FlexPaper二次开发问题及搜索高亮显示 最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发 ...
- Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子
4. Flexpaper简单使用 通过上面三章的内容,大家对Flexpaper.SWFTools应该有大概的了解了,SWF文件也已经生成了,我们开始进入Flexpaper的使用的介绍. 本章中只演示F ...
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单、书签等相关问题
2015-03-02 更新文章,由于需求修改,更改了flexpaper插件,故增加第9.10.11小节,下载代码时请注意. 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个 ...
- FlexPaper及二次开发
Flexpaper二次开发入门教程 http://ajava.org/course/web/?page=2
- Navisworks API 简单二次开发 (自定义工具条)
在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用
目 录 第十二章 二次开发及应用... 2 12.1 项目配制... 3 12.2 引用相关组件... 4 12.3 构建主程序... 5 ...
- OBS-Studio二次开发记录
OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ...
- 小猪cms微信二次开发之怎样分页
$db=D('Classify'); $zid=$db->where(array('id'=>$this->_GET('fid'),'token'=>$this->tok ...
- 承接 AutoCAD 二次开发 项目
本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...
随机推荐
- 转 : ANT 调用sqlplus 客户端
Jenkins安装与配置 (版本控制) 1 用ant脚本执行sql语句现在我需要写一个ant脚本来实现项目安装,情况是这样的,客户现在运行的版本可能是2.0,安装目录里可能有REL_1_0,REL_ ...
- 关于hasnextLine()方法的一些理解
以前对于hasnextline的理解就是 :判断是否有下一个值 今天发现了个特例,它竟然是个阻塞式的方法 看下面一个案例 这是服务器 package Service; import java.io.I ...
- http & json
TCP(传输层协议) (1) 面向连接 (2) 可靠的 (3) 基于字节流的 连接建立阶段: 客户端 ------->SYN 服务端(服务器被动打开) 客 ...
- Bill Total Value
Bill Total Value time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- OVS - commands
journalctl -t ovs-vswitchd ovs-vsctl show ovs-ofctl show br0 set vlanid ovs-vsctl set port eth0 tag= ...
- c3p0连接池的使用
利用c3p0连接池获取数据库连接,即不再通过DriverManager的getConnection(url,user,password)方法获取connection,而是通过c3p0数据源的类来获取连 ...
- 8--UI 初步认识 简易计算器
UI是App的根基:一个App应该是先有UI界面,然后在UI的基础上增加实用功能(2)UI相对简单易学:UI普遍是学习过程中最简单的一块,能快速拥有成就感和学习兴趣(3)UI至关重要:开发中的绝大部分 ...
- IDL 实现PCA算法
在多元统计分析中,主成分分析(Principal components analysis,PCA)是一种分析.简化数据集的技术.主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特 ...
- Linux中防火墙centos
一般的防火墙用下面这些简单的配置都能达到目的 1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开 ...
- webapp之路--meta标签format-detection、apple-mobile-web-app-capable
1. format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置: meta ...