flexpaper源码分析

1.flexpaper代码结构

图1:

图2:


2.FlexPaper,UI层次结构

主要分析viewer这个类

viewer的child有3层

最上层有个_skinImgDo:Image这个是flexPaper的logo,在右下角,放上去点击就弹出一个关于的alert


中间是_swfContainer:Canvas不过visible=false,中间这一层是不可见的

         嵌套一个ui

                ui里面有一个_docLoader:AVM2Loader.DocumentContainer

最下层是一个_paperContainer:ZoomCanvas

        嵌套一个_displayContainer:FlowBox   FlowBox是一个VBox,加了鼠标拖拽的事件

               _displayContainer里面就是一个个DupImage,_pageList这个数组就是存放的DupImage,pdf有多少页就有多少个

                      DupImage的child是DupLoader(当前视图页,和下面看不见的那一页都是DupLoader),或者是Bitmap或者没有child(看不见的其他页都是                                     Bitmap或者空)

3.FlexPaper,Viewer初始化过程

Viewer的createChildren方法里面初始化各种child,添加了一个timer执行repositionPapers。随后执行FlexPaperViewer_Base的createChildren在这个方法里面对Viewer的DocLoader赋值
_docLoader:AVM2Loader,然后执行Viewer的set SWfFile,这个方法首先销毁Viewer的所有child然后给_docLoader添加一个加载完成的事件
_docLoader.addEventListener(SwfLoadedEvent.SWFLOADED, swfComplete,false,0,true);
随后执行createDisplayContainer重新创建child。然后执行_docLoader的load方法
_docLoader.load(new URLRequest(_swfFile),StreamUtil.getExecutionContext());


当load加载完成时,执行swfComplete

						var mobj:Object = event.swfObject.content;
						_libMC = new SwfDocument(mobj as MovieClip);
首先给_libMC赋值,然后执行createLoaderList,创建_docLoader.LoaderList:DupLoader,也就是最后我们看到的画面了
随后执行方法addInLoadedPages来添加页

				for(var i:int=0;i<numPages;i++){
					_libMC.gotoAndStop(i+1);
					createPaper(i+1,(_libMC.width>0)?_libMC.width:w,(_libMC.height>0)?_libMC.height:h);
				}		
				
				addPages();
createPaper创建DupImage对象,并依次给_pageList赋值,个数就是页数
addPages将所有的DupImage添加进_displayContainer:FlowBox

随后执行repositionPapers

LoaderList.loadBytes,加载整个pdf的Loader,最后将DupLoader添加进DupImage就显示出来了。。repositionPapers这个方法只显示动态对DupImage里面的child进行添加和移除,只让当前显示的DupImage里面的child是DupLoader并且让DupLoader跳转带指定的frame。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值