论坛引擎:Discuz! 2.5
工具:flexpaper1.5.6 二次开发版本
本文主要探讨大体的思路及相关技术难点问题,属个人工作之余的一些小小开发,仅供探讨,嘿嘿、、、
实现效果如图:
论坛为什么需要在线预览功能,呵呵、、、本公司的论坛就需要这样的功能,还用得着下载再看吗?直接看完不就得了,呵呵、、、
关于flexpapaer的二次开发请参照前文:flexpaper的二次开发总结及探讨
这里主要修改不同点是Diyflexpaper.mxml
<?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[
[Bindable]
public var _Scale:Number = 1;//缩放比例
[Bindable]
public var _EncodeURI:Boolean = true;
[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 _MinZoomSize:Number = 0.3;
[Bindable]
public var _MaxZoomSize:Number = 5;
[Bindable]
public var _FitPageOnLoad:Boolean = false;//加载后适合高度
[Bindable]
public var _FitWidthOnLoad:Boolean = true;//加载后适合宽度
[Bindable]
public var _PrintEnabled:Boolean = false;//是否支持打印
[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{
_Scale = 1;
_SwfFile = this.loaderInfo.parameters.url;
_EncodeURI = true;
_ZoomTransition = "easeOut";
_ZoomTime = 0.6;
_MinZoomSize = 0.2;
_MaxZoomSize = 5;
_ZoomInterval = 0.1;
_FitPageOnLoad =false;
_FitWidthOnLoad = true;
_PrintEnabled = false;
_FullScreenAsMaxWindow = false;
_ProgressiveLoading = true;
_localeChain ="zh_CN";//语言
//注册事件监听
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
//---------------------------事件------------------------------
private function onMouseOver(event:MouseEvent):void{
this.isFocus = true;
}
private function onMouseOut(event:MouseEvent):void{
this.isFocus = false;
}
]]>
</mx:Script>
<fp:FlexPaperViewer id="FlexPaper"
width="100%"
height="100%"
Scale="{_Scale}"
SwfFile="{_SwfFile}"
ZoomTransition="{_ZoomTransition}"
ZoomTime="{_ZoomTime}"
MinZoomSize="{_MinZoomSize}"
MaxZoomSize="{_MaxZoomSize}"
ZoomInterval="{_ZoomInterval}"
FitPageOnLoad="{_FitPageOnLoad}"
FitWidthOnLoad="{_FitWidthOnLoad}"
EncodeURI="{_EncodeURI}"
FullScreenAsMaxWindow="{_FullScreenAsMaxWindow}"
ProgressiveLoading="{_ProgressiveLoading}" />
</mx:Application>
其中 this.loaderInfo.parameters.url 是获取加载该flash的地址参数,并非当前url地址的参数,这样修改主要目的是论坛加载flexpaper时好传递参数。
好了,flexpaper准备完毕,下面就开始为论坛添加插件吧。
以管理员身份登陆discuz论坛管理中心,选择
discuz代码,具体操作很简单,不再阐述,添加一个自定义代码后进入详情:主要设置如下:
替换内容:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="[url=http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0][color=#0000ff]http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0[/color][/url]" width="{1}" height="{2}" type="application/x-shockwave-flash"><param value="true" name="allowfullscreen"><param name="allowScriptAccess" value="always"><param name="movie" value="http://192.168.0.200/flexpaper/Diyflexpaper.swf?url={3}"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><embed src="http://192.168.0.200/flexpaper/Diyflexpaper.swf?url={3}" quality="high" bgcolor="#ffffff" width="{1}" height="{2}" allowScriptAccess="always"allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="[url=http://www.macromedia.com/go/getflashplayer][color=#0000ff]http://www.macromedia.com/go/getflashplayer[/color][/url]" wmode="transparent" /></object>
http://192.168.0.200/flexpaper/Diyflexpaper.swf 这是我的flexpaper地址
参数个数:3
参数提示语:
请输入 阅读器 的宽度:
请输入 阅读器 的高度:
请输入需要打开的flash地址:
其余默认,提交后添加用户组使用权限,在发贴时便可看到如下图标了:
这里打开的flash地址是.../swf/1.swf,下面探讨flash地址问题:
1、该地址是已经实现pdf转为swf的文件地址,本文效果图为手动转换后上传到服务器的,那么对于一般用户怎么用呢?
该论坛全部用php开发,本人实在不会,呵呵,不然就可以写一个后台转换程序,这里让用户输入的地址为客户端pdf什么的文件地址,提交后转换程序进行上传并转换,这样就完美了。
如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!