鉴于网上已经有很多的仿百度文库开发的Java+FlexPaper+swfTools开发教程,对于一个初学者我提供一些我看过的写的不错的参考资料。希望能够帮助大家尽快的实现开发。
首先说一下Flash Player(简称FP)。经常上网的朋友一定遇到过Flash Player版本升级的提示吧,这东西其实就是浏览器插件,据说已经有了98%的安装普及率(FP具体介绍请见http://baike.baidu.com/view/1585492.htm)。Flex生成的页面主要是通过Html包装一下生成的swf文件,和Flash生成的swf一样,它也靠FP才能完美运行,这有点类似JVM虚拟机和.NET FRAMEWORK(FP里内嵌了AVM虚拟机)。
说了关于Flash的事情,其实是因为Flash比Flex更出名,ADOBE也察觉到这一点,所以在预备推出FLEX4时,又将其更名为Flash,只是SDK仍然沿用FLEX的名号。FLEX和FLASH并没有本质区别,它们最终都是转为ActionScript源文件,然后被编译为二进制的swf文件(就和JAVA文件被编译成class一样),再交由FP(FP就像JVM虚拟机一样)来执行。不同的是,FLASH更偏向于设计人员,它有时间轴和帧的概念,能更好地实现动画、特效、短片等美工效果。Flex是面向开发者的,隐藏了时间轴的概念(只有两帧),更专注于解决企业应用的表现层方案,提供了大量的通用组件用于构建前端页面、通过数据服务技术能更好的分离界面和逻辑业务层。
通过这篇源码的说明http://blog.csdn.net/f111fei/article/details/9137279,我们可以自己去SVN上下载然后进行2次编译,开发自己所需的功能。只是这篇文章写得有点浅,可以说明一下各个文件的作用。
其次我提供的是http://wenku.baidu.com/view/a23331d0b9f3f90f76c61b3d.html这篇文章。作者mark写的对于想要二次开发的人员很有帮助,它主要介绍了SWFTools的用法,Flash Builder的建立Flex项目以及具体参数的说明。但是具体像界面的工具栏操作的增加功能以及界面优化没有提出任何建议。
再次我觉得http://blog.csdn.net/hil2000/article/details/8459940这篇文章从项目的经验着手,很好的为我们演示了Java+FlexPaper+swfTools的使用。但是只是从实验的角度讲了项目,具体应用不会只是打开一个图片或者pdf,我觉得目前这个模式主要可以应用在电子档案。
<%@ page import="nju.edu.software.zgy.bean.Dzda"%>
<%@ page import="nju.edu.software.zgy.bean.DzdaWj"%>
<%@ page import="nju.edu.software.zgy.bean.DzdaWjj"%>
<%@ page import="java.util.List"%>
<%@ page import="nju.edu.software.zgy.util.StringUtil"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="utf-8"%>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>电子档案阅读</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; text-align:center;}
#flashContent { display:none; }
#ajxx {padding: 10px 5px 5px 5px;font-size:14px;font-weight: bold;text-align:center;margin- bottom:0px;color:#2E8B57;}
div.odd { background-color:#F0FFF0;padding:5px;margin-bottom:5px;}
div.eve { background-color:#d8ecfb;padding:5px;margin-bottom:5px;}
div.odd a{text-decoration: none;color:#2E8B57;}
div.eve a{text-decoration: none;color:#2E8B57;}
div.odd a:hover{color:#CD6839;}
div.eve a:hover{color:#CD6839;}
.mulu_title{padding: 15px 5px 15px 5px;font-size:16px;font-weight:bold;text-align:center;mar gin-top:0px;background-color:#21748f;color:white;background-image: url(images/bg_icon01.gif) ;background-repeat: no-repeat;}
.mulu_content{height:92%;padding: 5px 5px 5px 5px;font-weight: bold;font-size:14px;text-alig n:left;margin-bottom:10px;line-height:150%;overflow-y:scroll;}
</style>
<link rel="stylesheet" href="css/themes/base/jquery.ui.all.css">
<script src="Scripts/jquery-1.5.1.js"></script>
<script src="Scripts/ui/jquery.ui.core.js"></script>
<script src="Scripts/ui/jquery.ui.widget.js"></script>
<script src="Scripts/ui/jquery.ui.tabs.js"></script>
<script type="text/javascript" src="Scripts/flexpaper_flash_debug.js"></script>
<script>
$(function() {
<%
boolean zjExist,fjExist,gajExist,jcjExist;
int zjYm=0;
int fjYm=0;
int gajYm=0;
int jcjYm=0;
String firstDajz="";
int firstYm=0;
Dzda dzda=(Dzda)request.getAttribute("dzda");
int subjyid=dzda.getSubjyid();
List<DzdaWjj> wjjList=dzda.getZjWjjList();
if(wjjList.isEmpty())zjExist=false;else {zjExist=true;firstDajz="zj";firstYm=dzda.getZjTotalPag es();zjYm=firstYm;}
wjjList=dzda.getFjWjjList();
if(wjjList.isEmpty())fjExist=false;else {fjExist=true;if(firstDajz==""){firstDajz="fj";firstYm= dzda.getFjTotalPages();}fjYm=firstYm;}
wjjList=dzda.getGajWjjList();
if(wjjList.isEmpty())gajExist=false;else {gajExist=true;if(firstDajz==""){firstDajz="gaj";first Ym=dzda.getGajTotalPages();}gajYm=firstYm;}
wjjList=dzda.getJcjWjjList();
if(wjjList.isEmpty())jcjExist=false;else {jcjExist=true;if(firstDajz==""){firstDajz="jcj";first Ym=dzda.getJcjTotalPages();}jcjYm=firstYm;}
%>
var subjyid="<%=subjyid%>";
var firstDajz="<%=firstDajz%>";
var firstYm="<%=firstYm%>"
var zjYm="<%=zjYm%>"
var fjYm="<%=fjYm%>"
var gajYm="<%=gajYm%>"
var jcjYm="<%=jcjYm%>"
var divA=document.getElementById("zjml");
var divB=document.getElementById("fjml");
var divC=document.getElementById("gaml");
var divD=document.getElementById("jcml");
//设置缺省打开的目录和卷宗
var defaultJz="{/dzda2/"+subjyid+"/"+firstDajz+"[*,0].swf,"+firstYm+"}";
var defaultMulu=document.getElementById(firstDajz+"ml");
defaultMulu.style.display="block";
var fp = new FlexPaperViewer(
'FlexPaperViewer',
'viewerPlaceHolder', { config : {
// SwfFile : escape('/dzda2/Paper.swf'),
SwfFile : escape(defaultJz),
Scale : 0.6,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : false,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'Portrait',
PrintPaperAsBitmap : false,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: 'zh_CN'
}});
var viewer=window.FlexPaperViewer_Instance.getApi();
$( "#tabs" ).tabs(
{
select: function(event, ui) {
divA.style.display="none";
divB.style.display="none";
divC.style.display="none";
divD.style.display="none";
switch(ui.index){
case 0:
divA.style.display="block";
viewer.loadSwf("{/dzda2/"+subjyid+"/zj[*,0].swf,"+zjYm+"}");
break;
case 1:
divB.style.display="block";
viewer.loadSwf("{/dzda2/"+subjyid+"/fj[*,0].swf,"+fjYm+"}");
break;
default:
break;
}
}
}
);
function getViewer(){
return viewer;
}
});
function getViewer(){
var viewer=window.FlexPaperViewer_Instance.getApi();
return viewer;
}
function show(){
var img=document.getElementById("icon");
if($("#ajxx").css("display") == "block"){
$("#ajxx").css("display","none");
$("#info").css("height","8%");
$("#ml").css("height","92%");
img.src="images/show.png";
}
else{
$("#ajxx").css("display","block");
$("#info").css("height","15%");
$("#ml").css("height","85%");
img.src="images/hide.png";
}
}
</script>
</head>
<body>
<div style="margin:0 auto;width:90%;padding-top:5px;height:95%;verflow-y:hidden;">
<!--<div style="position:absolute;left:110px;top:10px;">-->
<div style="float:left;width:70%;height:100%;padding:0px;">
<div id="tabs" style="width:100%;height:100%;">
<ul>
<%if(zjExist){%><li><%}else{%><li style="display:none;"><%}%><a href="#tabs-1">正卷</a></li>
<%if(fjExist){%><li><%}else{%><li style="display:none;"><%}%><a href="#tabs-1">副卷</a></li>
</ul>
<div id="tabs-1" style="width:100%;padding:0px;height:95%;overflow-x:hidden">
<a id="viewerPlaceHolder" style="width:100%;height:100%;display:block"></a>
</div>
</div>
</div>
<div style="float:right;width:27%;height:100%;font-family:Verdana;font-size:9pt;padding:0px;border- style:solid;border-color:#CACACA;">
<div id="info" style="height:15%;">
<div class="mulu_title" ><img id="icon" src="images/hide.png" style="display:none" oncl ick="show()">案号</div>
<div id="ajxx" >
<%=dzda.getAh()%></div>
</div>
<div id="ml" style="height:85%;padding-top:2px;">
<div id="zjml" style="display:none;height:100%;">
<div class='mulu_title'>正卷目录</div>
<div class='mulu_content'>
<%if(zjExist){
wjjList=dzda.getZjWjjList();
for(int i=0;i<wjjList.size();i++){
DzdaWjj dzdaWjj=wjjList.get(i);
String wjjmc=dzdaWjj.getWjjmc();
int startPage=dzdaWjj.getStartPage();
if(i%2==1){%>
<div class="odd"><%}else{%>
<div class="eve"><%} %>
<img src="images/folder.png" />
<a href="#" οnclick="getViewer().gotoPage(<%=startPage %>)"> (第<% =startPage%>页)<%=StringUtil.RemoveBracket(wjjmc) %>
</a></div><%}}%>
</div>
</div>
<div id="fjml" style="display:none;height:100%;">
<div class='mulu_title'>副卷目录</div>
<div class='mulu_content'>
<%if(fjExist){
wjjList=dzda.getFjWjjList();
for(int i=0;i<wjjList.size();i++){
DzdaWjj dzdaWjj=wjjList.get(i);
String wjjmc=dzdaWjj.getWjjmc();
int startPage=dzdaWjj.getStartPage();
int endpage=startPage+dzdaWjj.getWjList().size();
if(i%2==1){%>
<div class="odd"><%}else{%>
<div class="eve"><%} %>
<img src="images/folder.png" />
<a href="#" οnclick="getViewer().gotoPage(<%=startPage %>)">(第<%= startPage%>页)<%=StringUtil.RemoveBracket(wjjmc) %>
</a></div><%}}%>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
目前写得jsp这个界面结合了文件结构,树结构以及阅读的FlexPaper页面。主要遇到的问题是界面diy方式不足,比如工具栏图标的鼠标响应文字可以变得更醒目。希望FlexPaper能够在接下来的第三版可以支持更好的实际结合。