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的。(从网上找到的)

  1. <?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();">
  2.  
  3. <mx:Script>
    <![CDATA[
    import mx.controls.Alert;
  4.  
  5. public var _aid = 0;//文档ID
  6.  
  7. [Bindable]
    public var _Scale:Number = 1;//缩放比例
  8.  
  9. [Bindable]
    public var _SwfFile:String = "";//SWF文件路径
  10.  
  11. [Bindable]
    public var _ZoomTransition:String = "easeOut";
  12.  
  13. [Bindable]
    public var _ZoomTime:Number = 0.6;
  14.  
  15. [Bindable]
    public var _ZoomInterval:Number = 0.1;
  16.  
  17. [Bindable]
    public var _FitPageOnLoad:Boolean = false;//加载后适合高度
  18.  
  19. [Bindable]
    public var _FitWidthOnLoad:Boolean = false;//加载后适合宽度
  20.  
  21. [Bindable]
    public var _PrintEnabled:Boolean = true;//是否支持打印
  22.  
  23. [Bindable]
    public var _FullScreenAsMaxWindow:Boolean = false;//是否支付全屏
  24.  
  25. [Bindable]
    public var _ProgressiveLoading:Boolean = false;//是否延迟加载
  26.  
  27. [Bindable]
    public var _localeChain:String = "zh_CN";//语言
  28.  
  29. private var isFocus:Boolean = false;
  30.  
  31. //初始化参数
    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"];
  32.  
  33. //注册事件监听
    this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
    this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
  34.  
  35. //开放给外部(javascript)调用
    ExternalInterface.addCallback("hasFocus", hasFocus);
    //ExternalInterface.addCallback("focus", focus);
    ExternalInterface.addCallback("setViewerFocus", setViewerFocus);
    }
  36.  
  37. private function onMouseOver(event:MouseEvent):void{
    this.isFocus = true;
    }
  38.  
  39. private function onMouseOut(event:MouseEvent):void{
    this.isFocus = false;
    }
  40.  
  41. public function hasFocus():Boolean{
    //Alert.show("hasFocus");
    return isFocus;
    }
  42.  
  43. public function setViewerFocus(isFocus:Boolean):void{
    //Alert.show("setViewerFocus");
    this.paperViewer.setViewerFocus();
    }
  44.  
  45. /**
    *
    * 获取String类型参数
    * 如果没有,则返回默认值
    **/
    private function getString(params:Object, name:String, def:String):String{
    if(params[name] != null){
    return params[name];
    }
    return def;
    }
  46.  
  47. private function getNumber(params:Object, name:String, def:Number):Number{
    if(params[name] != null){
    return params[name];
    }
    return def;
    }
  48.  
  49. 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-->
  50.  
  51. <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接口了

  1. public function gotoPage(p:Number):void{
    paperViewer.gotoPage(p);
    }

别忘了增加一句监听,给js调用

  1. ExternalInterface.addCallback("gotoPage", gotoPage);

到此OK。编译出来的可以加载API了。

添加打印:

增加一句监听,给js调用

  1. 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二次开发的更多相关文章

  1. FlexPaper二次开发问题及搜索高亮显示

    原文:FlexPaper二次开发问题及搜索高亮显示 最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发 ...

  2. Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子

    4. Flexpaper简单使用 通过上面三章的内容,大家对Flexpaper.SWFTools应该有大概的了解了,SWF文件也已经生成了,我们开始进入Flexpaper的使用的介绍. 本章中只演示F ...

  3. 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单、书签等相关问题

    2015-03-02 更新文章,由于需求修改,更改了flexpaper插件,故增加第9.10.11小节,下载代码时请注意. 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个 ...

  4. FlexPaper及二次开发

    Flexpaper二次开发入门教程 http://ajava.org/course/web/?page=2

  5. Navisworks API 简单二次开发 (自定义工具条)

    在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...

  6. [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用

    目       录 第十二章     二次开发及应用... 2 12.1        项目配制... 3 12.2        引用相关组件... 4 12.3        构建主程序... 5 ...

  7. OBS-Studio二次开发记录

    OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ...

  8. 小猪cms微信二次开发之怎样分页

    $db=D('Classify'); $zid=$db->where(array('id'=>$this->_GET('fid'),'token'=>$this->tok ...

  9. 承接 AutoCAD 二次开发 项目

    本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...

随机推荐

  1. VVDocumenter安装过程的一些问题

    vvdocument是瞄神写的一个插件 作用的话大家都知道 这里就不多说了 插件下载地址:https://github.com/onevcat/VVDocumenter-Xcode 1.下载后解压 编 ...

  2. ios中关于UIImagePickerController的一些知识总结

    记得添加MobileCoreServices.framework 及导入#import <MobileCoreServices/MobileCoreServices.h> @interfa ...

  3. 一篇非常适合git入门的文章

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579 ...

  4. js.map error

    1. 问题:      1.1 通过bower install 的components 许多在运行的时候报404无法找到js.map文件, 如图:          2. 分析:     2.1 查看 ...

  5. 多线程junit单元测试

    junit中测试完成后会进行jvm退出,而不是线程退出,所以任一线程退出都会导致测试结束,junit想进行多线程测试需要进行另外包装,网上看到一个投机取巧的例子还不错,贴上我的测试代码(代码中我需要测 ...

  6. php 后台权限例子 (mysql 数据表)

    说明   超级管理员的权限最高   可以操作所有的功能   !!!      超级管理员给特定的用户分配对应的权限 下文注解:   用户表 关联 用户组表  每个用户组对应特定的功能权限    !! ...

  7. linux 下载安装tomcat

    1.下载tomcat 2.tar -zxvf apache-tomcat-7.0.67.tar.gz 3.cd bin目录  启动  ./startup.sh [root@fuyuanming bin ...

  8. iOS开发工具——统计Crash的工具Crashlytics

    简介 Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用崩溃信息的工具.Crashlytics的使用者包括:支付工具Paypal, 点评应用Yelp, 照片分享应用Pa ...

  9. ajax2016/4/15 post与get

    post方式,数据放在send()里面作为参数传递 xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); ...

  10. acm课程练习2--1013(同1014)

    题目描述 There is a strange lift.The lift can stop can at every floor as you want, and there is a number ...