豆丁网缓存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;
        }
 }
}

原创粉丝点击