豆丁网缓存docin离线浏览(提供源码)修改,已更新
来源:互联网 发布:java招聘深圳 编辑:程序博客网 时间:2024/04/25 15:57
加入浏览按钮和地址输入框,可以用ie打开使用。已经很有实用价值了。
http://download.csdn.net/source/2058487
anlin2.as中在下载资源中没有更新。
anlin.as
package
{
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.display.*;
import flash.external.*;
import flash.system.*;
import flash.text.*;
import fl.controls.*;
import fl.events.ScrollEvent;
public class anlin extends MovieClip
{
private var urlStream:URLStream;
private var myFileReference:FileReference;
private var circle:Sprite = new Sprite();
private var myScrollBar=new ScrollBar();
private var filedirTextBox:TextField = new TextField();
public function anlin(param1:Sprite = null, param2:Sprite = null)
{
addChild(filedirTextBox);
filedirTextBox.type = TextFieldType.INPUT;
filedirTextBox.text="若docin文件在不同目录需在此输入文件路径";
filedirTextBox.border=true;
filedirTextBox.background=true;
filedirTextBox.backgroundColor=0xffffff;
filedirTextBox.height=filedirTextBox.textHeight+4;
filedirTextBox.width=300;
filedirTextBox.x=50;
filedirTextBox.y=300;
filedirTextBox.addEventListener(FocusEvent.FOCUS_IN , filedirTextBoxfocusIn);
var liulanButton=new Button();
addChild(liulanButton);
liulanButton.label = "浏览" ;
liulanButton.width = 40;
liulanButton.addEventListener(MouseEvent.CLICK, liulanButtonClick);
liulanButton.move(filedirTextBox.x+filedirTextBox.width+5,filedirTextBox.y-2);
var openButton=new Button();
addChild(openButton);
openButton.label = "打开" ;
openButton.width = 40;
openButton.addEventListener(MouseEvent.CLICK, openButtonClick);
openButton.move(liulanButton.x+liulanButton.width+5,filedirTextBox.y-2);
urlStream = new URLStream();
urlStream.endian = Endian.LITTLE_ENDIAN;
urlStream.addEventListener(Event.COMPLETE, completeHandle);
urlStream.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandle);
urlStream.addEventListener(Event.OPEN, urlStreamOpenHandle);
}
private function filedirTextBoxfocusIn(e:FocusEvent) : void//
{
if(filedirTextBox.text=="若docin文件在不同目录需在此输入文件路径")
filedirTextBox.text="";
}
private function liulanButtonClick(e:MouseEvent) : void//“浏览”按钮
{
myFileReference = new FileReference();
myFileReference.browse([new FileFilter("*.docin", "*.docin"),new FileFilter("*.*", "*.*")]);
myFileReference.addEventListener(Event.SELECT, selectHandler);
}
private function openButtonClick(e:MouseEvent) : void//“打开”按钮
{
urlStream.load(new URLRequest(filedirTextBox.text));
this.addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
this.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
circle.opaqueBackground =0x869ca7;
var myButton=new Button();
addChild(myButton);
myButton.label = "还原" ;
myButton.width = 40;
myButton.addEventListener(MouseEvent.CLICK, buttonClick);
myButton.move(myButton.stage.stageWidth-myButton.width,0);
trace("stageWidth"+myButton.stage.stageWidth );
myScrollBar.move(myButton.stage.stageWidth-15,myButton.height);
myScrollBar.height=myButton.stage.stageHeight-myButton.height;
myScrollBar.maxScrollPosition=100;
myScrollBar.minScrollPosition=0;
trace(myScrollBar.scrollPosition);
addChild(myScrollBar);
myScrollBar.addEventListener(ScrollEvent.SCROLL , ScrollBarScroll);
}
private function selectHandler(event:Event):void//文件成功选则以后
{
var file:FileReference = FileReference(event.target);
filedirTextBox.text=file.name;
}
private function buttonClick(e:MouseEvent) //“还原”按钮点击
{
circle.scaleX=1;
circle.scaleY=1;
circle.x=0;
circle.y=0;
myScrollBar.scrollPosition=0;
}
function ScrollBarScroll(event:ScrollEvent):void //滚动条滚动,改变显示位置
{
trace("ScrollBarScroll--"+myScrollBar.scrollPosition);
circle.y=-(circle.height-myScrollBar.stage.stageHeight)*myScrollBar.scrollPosition/100;
}
function mouseDown(event:MouseEvent):void //鼠标按下,开始拖动
{
circle.startDrag();
}
function mouseReleased(event:MouseEvent):void //鼠标松开,停止拖动
{
circle.stopDrag();
myScrollBar.scrollPosition=-circle.y*100/(circle.height-myScrollBar.stage.stageHeight+20);
}
private function mouseWheelHandler(event:MouseEvent):void //鼠标滚轮控制缩放
{
circle.height=circle.height*(1+event.delta/10);
circle.width=circle.width*(1+event.delta/10);
trace(circle.scaleX);
}
private function completeHandle(event:Event) : void
{
var littleHeaderArray:ByteArray = new ByteArray();
littleHeaderArray.endian = Endian.LITTLE_ENDIAN;
littleHeaderArray.writeByte(70);
littleHeaderArray.writeByte(87);
littleHeaderArray.writeByte(83);
littleHeaderArray.writeByte(9);
littleHeaderArray.writeInt(0);
var pageWidth:Number = urlStream.readInt();
trace("pageWidth::" + pageWidth.toString());
var pageHeight:Number = urlStream.readInt();
var totalPages:int = urlStream.readInt();
trace("_totalPages::" + totalPages.toString());
var headerLength:int = urlStream.readInt();
trace("headerLength::" + headerLength.toString());
var headerArray:ByteArray = new ByteArray();
headerArray.endian = Endian.LITTLE_ENDIAN;
this.urlStream.readBytes(headerArray, 0, headerLength);
headerArray.uncompress();
var headerUncompressLength:int = headerArray.length;
trace("headerArray::" + headerArray);
trace("headerUncompressLength::" + headerUncompressLength);
for(var i:int=0;i<totalPages&&i<50;i++)
{
var bodyLen:int = this.urlStream.readInt();
var bodyByteArray:ByteArray = new ByteArray();
bodyByteArray.endian = Endian.LITTLE_ENDIAN;
this.urlStream.readBytes(bodyByteArray, 0, bodyLen);
bodyByteArray.uncompress();
var bodyUncompressLen:int = headerUncompressLength + bodyByteArray.length + 8;
littleHeaderArray.position = 4;
littleHeaderArray.writeInt(bodyUncompressLen);
// littleHeaderArray.writeByte(_loc_3%256);
// littleHeaderArray.writeByte(_loc_3/256%256);
// littleHeaderArray.writeByte(_loc_3/256/256%256);
// littleHeaderArray.writeByte(_loc_3/256/256/256);
littleHeaderArray.position = 0;
var swfLoader:Loader = new Loader();
var swfByteArray:ByteArray = new ByteArray();
swfByteArray.endian = Endian.LITTLE_ENDIAN;
swfByteArray.writeBytes(littleHeaderArray);
//headerArray.position = 0;
swfByteArray.writeBytes(headerArray);
swfByteArray.writeBytes(bodyByteArray);
swfLoader.loadBytes(swfByteArray);
swfLoader.y=(pageHeight+20)*i;
trace("swfLoader.y::" +swfLoader.y);
var pageTextBox:TextField = new TextField();
circle.addChild(pageTextBox);
pageTextBox.text = "第"+(i+1)+"页(共"+totalPages+"页)";
pageTextBox.background=true;
pageTextBox.backgroundColor=0x00ffff;
pageTextBox.height=pageTextBox.textHeight+2;
pageTextBox.x=pageWidth/2;
pageTextBox.y=swfLoader.y+pageHeight
circle.addChild(swfLoader);
}
}
}
private function ioErrorHandle(event:IOErrorEvent) : void
{
trace(event.toString());
return;
}
private function urlStreamOpenHandle(event:Event) : void
{
trace("open load::::::::" + event.type);
return;
}
}
anlin2.as
package
{
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.display.*;
import flash.external.*;
import flash.system.*;
import flash.text.*;
import fl.controls.*;
import fl.events.ScrollEvent;
public class anlin2 extends MovieClip//EventDispatcher
{
private var urlStream:URLStream;
private var myFileReference:FileReference;
private var circle:Sprite = new Sprite();
private var myScrollBar=new ScrollBar();
private var filedirTextBox:TextField = new TextField();
public function anlin2(param1:Sprite = null, param2:Sprite = null)
{
addChild(filedirTextBox);
filedirTextBox.type = TextFieldType.INPUT;
filedirTextBox.text="若docin文件在不同目录需在此输入文件路径";
filedirTextBox.border=true;
filedirTextBox.background=true;
filedirTextBox.backgroundColor=0xffffff;
filedirTextBox.height=filedirTextBox.textHeight+4;
filedirTextBox.width=300;
filedirTextBox.x=50;
filedirTextBox.y=300;
filedirTextBox.addEventListener(FocusEvent.FOCUS_IN , filedirTextBoxfocusIn);
var liulanButton=new Button();
addChild(liulanButton);
liulanButton.label = "浏览" ;
liulanButton.width = 40;
liulanButton.addEventListener(MouseEvent.CLICK, liulanButtonClick);
liulanButton.move(filedirTextBox.x+filedirTextBox.width+5,filedirTextBox.y-2);
var openButton=new Button();
addChild(openButton);
openButton.label = "打开" ;
openButton.width = 40;
openButton.addEventListener(MouseEvent.CLICK, openButtonClick);
openButton.move(liulanButton.x+liulanButton.width+5,filedirTextBox.y-2);
urlStream = new URLStream();
urlStream.endian = Endian.LITTLE_ENDIAN;
urlStream.addEventListener(Event.COMPLETE, completeHandle);
urlStream.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandle);
urlStream.addEventListener(Event.OPEN, urlStreamOpenHandle);
}
private function filedirTextBoxfocusIn(e:FocusEvent) : void//
{
if(filedirTextBox.text=="若docin文件在不同目录需在此输入文件路径")
filedirTextBox.text="";
}
private function liulanButtonClick(e:MouseEvent) : void//“浏览”按钮
{
myFileReference = new FileReference();
myFileReference.browse([new FileFilter("*.docin", "*.docin"),new FileFilter("*.*", "*.*")]);
myFileReference.addEventListener(Event.SELECT, selectHandler);
}
private function openButtonClick(e:MouseEvent) : void//“打开”按钮
{
urlStream.load(new URLRequest(filedirTextBox.text));
this.addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
this.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
circle.opaqueBackground =0x869ca7;
var myButton=new Button();
addChild(myButton);
myButton.label = "还原" ;
myButton.width = 40;
myButton.addEventListener(MouseEvent.CLICK, buttonClick);
myButton.move(myButton.stage.stageWidth-myButton.width,0);
trace(myButton.stage.stageWidth );
myScrollBar.move(myButton.stage.stageWidth-15,myButton.height);
myScrollBar.height=myButton.stage.stageHeight-myButton.height;
myScrollBar.maxScrollPosition=100;
myScrollBar.minScrollPosition=0;
trace(myScrollBar.scrollPosition);
addChild(myScrollBar);
myScrollBar.addEventListener(ScrollEvent.SCROLL , ScrollBarScroll);
}
private function selectHandler(event:Event):void //文件成功选择
{
var file:FileReference = FileReference(event.target);
filedirTextBox.text=file.name;
}
function ScrollBarScroll(event:ScrollEvent):void //滚动条
{
trace("ScrollBarScroll");
circle.y=-(circle.height-myScrollBar.stage.stageHeight)*myScrollBar.scrollPosition/100;
}
private function buttonClick(e:MouseEvent) : void//“还原”按钮
{
circle.scaleX=1;
circle.scaleY=1;
circle.x=0;
circle.y=0;
myScrollBar.scrollPosition=0;
}
function mouseDown(event:MouseEvent):void //鼠标按下
{
circle.startDrag();
}
function mouseReleased(event:MouseEvent):void //鼠标松开
{
circle.stopDrag();
myScrollBar.scrollPosition=-circle.y*100/(circle.height-myScrollBar.stage.stageHeight);
}
private function mouseWheelHandler(event:MouseEvent):void //鼠标滚轮放大
{
circle.height=circle.height*(1+event.delta/10);
circle.width=circle.width*(1+event.delta/10);
}
private function completeHandle(event:Event) : void
{
var headerLen = this.urlStream.readUnsignedByte()+(this.urlStream.readUnsignedByte()<<8)+ (this.urlStream.readUnsignedByte()<<16)+(this.urlStream.readUnsignedByte()<<24);//0;
trace("headerLen::"+headerLen);
var tmpByteArray:ByteArray = new ByteArray();
this.urlStream.readBytes(tmpByteArray,0,headerLen);
//trace(tmpByteArray);
var descriptionStr:String = "";
var aa:int = 0;
while (aa < tmpByteArray.length)
{
descriptionStr = descriptionStr + String.fromCharCode(tmpByteArray.readUnsignedByte() - 99);
aa++;
}
trace(descriptionStr);
var headerXml = new XML(descriptionStr);
var totalPages = headerXml.children().length();
var tmpheight=0;
var i=0;
while(i<totalPages&&i<50)
{
var tempLoadCount = int(headerXml.children()[i].@size);
var loc4:ByteArray = new ByteArray();
this.urlStream.readBytes(loc4, 0, tempLoadCount);
var swfLoader = new Loader();
swfLoader.loadBytes(loc4);
swfLoader.y=tmpheight;
var pageTextBox:TextField = new TextField();
circle.addChild(pageTextBox);
pageTextBox.text = "第"+(i+1)+"页(共"+totalPages+"页)";
pageTextBox.background=true;
pageTextBox.backgroundColor=0x00ffff;
pageTextBox.height=pageTextBox.textHeight+2;
pageTextBox.x=int(headerXml[0].children()[i].@width)/2;
pageTextBox.y=swfLoader.y+int(headerXml[0].children()[i].@height);
circle.addChild(swfLoader);
tmpheight=tmpheight+int(headerXml[0].children()[i].@height)+20;
i++;
}
}
private function ioErrorHandle(event:IOErrorEvent) : void
{
trace(event.toString());
return;
}
private function urlStreamOpenHandle(event:Event) : void
{
trace("open load::::::::" + event.type);
return;
}
}
}
- 豆丁网缓存docin离线浏览(提供源码)修改,已更新
- docin转swf(vc源码)修正,更新下载!
- docin
- cocoapods 更新失败(已停止修改)
- oschina-app 源码分析-数据缓存(离线功能)
- 通过应用程序缓存实现HTML5的离线浏览
- IIS通过HTML5实现应用程序缓存的离线浏览
- 离线缓存更新麻烦,不如使用localStorage
- E2Snes9X,SFC的模拟器(源码已重新更新)
- HTML5离线缓存(Application_Cache)
- DiscuzX2.5 帖子页面更新浏览量 缓存机制
- 源码推荐:移动端商城(微信小程序源代码) WebView离线缓存
- 更新文件避免浏览器缓存的解决方法(源码)
- 修改Firefox的缓存位置 加速浏览速度 应用
- 离线缓存
- 离线缓存
- 离线缓存
- 再议HTML5离线浏览
- 如何选择视频聊天程序搭建视频聊天网站
- 用FileStream上传文件转换成二进制
- 瑞星将面临历史上最艰苦的一场战役(二)
- TBB源码阅读计划
- flex 和php 通信
- 豆丁网缓存docin离线浏览(提供源码)修改,已更新
- 鼓励自己最有效的20个方法
- webservice中调用本地session,request
- 添加jquery下拉
- 新的一年:虎虎生风
- Rex 操作系统
- 设计模式快速参考 - Design Patterns Quick Reference
- C++友元
- 利用flex builder 来开发php