posts - 496,comments - 227,trackbacks - 0
http://my.oschina.net/Boder/blog/931

国外有高手已经实现了IE浏览器内加载flashpaper,好像是这篇吧: http://www.darronschall.com/weblog/2006/11/how-to-load-flashpaper- documents-in-flex-2.cfm 这里将在他的基础上改成利用LocalConnection来通讯,以便更好的处理来回的操作. flex load flashpaper也离不开flash,这个例子其实就是用flash做一个空壳,比如命名FPload.swf这个壳就是用来加载 flashpapaer的,里面实现了对flashpaper的大小设置,缩略值,页数设置等等,注意这个fpload.swf是flash8的.在 flex中加载就得利用LocalConnection(如果不明白的得自己去想办法了解了)或者例子中的ExternalInterface跟 fpload.swf通讯,去设置尺寸,大小,页面等等 首先看flex3里面如何来加载flashpaper //com.magReader.FlashPaperLoader.as


package com.magReader
{

    
import flash.events.Event;
    
import flash.events.StatusEvent;
    
import flash.net.LocalConnection;
//import flash.system.System;

    
import mx.controls.SWFLoader;

    
/**
     * UIComponent designed specifically to load FlashPaper documents
     * and size them correctly in the available area.
     
*/
    
public class FlashPaperLoader extends SWFLoader
    {

        
/**
         * The id of the FlashPaperLoader.swf proxy that will be used
         * for communication pyurposes.
         
*/
        
public static const FLASH_PAPER_LOADED    : String = "flashPaperLoaded";
        
public static const FLASH_CONNERROR        : String = "flashConnError";
        
private var sendFlashConn:LocalConnection;
        
private var recieveFlashConn:LocalConnection;
        
/**
         * The name of the application that is loading in the FlashPaperLoader.swf
         * file.  This name must correspond to the "id" attribute in the object tag
         * and the "name" attribute in the embed tag when the Flex client is embedded
         * into the html page.
         
*/

        
/**
         * Constructor
         
*/
        
public function FlashPaperLoader()
        {
            
//source = "app-storage:/data/fpHolder.swf";
            sendFlashConn=new LocalConnection();
            recieveFlashConn 
= new LocalConnection();
            recieveFlashConn.client
=this;
            sendFlashConn.addEventListener(StatusEvent.STATUS, onStatus);
            sendFlashConn.allowDomain(
"*");
            recieveFlashConn.allowDomain(
"*");
            sendConn();
        }
        
public function sendConn():void
        {
            
try
            {
                recieveFlashConn.connect(
"_flexloader");
            } 
catch (error:ArgumentError) {
                trace(
"Can't connectthe connection name is already being used by another SWF");
                onConnError();
                
return;
            }
        }

        
private function onStatus(result:StatusEvent) :void{

            trace (result.level 
== "error"?"Operation failed":"Operation succeeded");

        }
        
//连接源出错
        private function onConnError():void
        {
            
//errUnload();

            var e:Event
=new Event(FlashPaperLoader.FLASH_CONNERROR);
            dispatchEvent( e );
        }

        
// =================================================================
        
//  Expose methods that are proxied from FlashPaperLoader.swf - Call
        
//  JavaScript methods that the FlashPaperLoader.swf file picks up
        
//  and passes to the loaded FlashPaper document.
        
// =================================================================

        
public function setSize( width:Number, height:Number ):void
        {
            trace(
"=========setPaperSize=============");
            sendFlashConn.send(
"_flashpaperloader","setPaperSize",width,height);
        }
        
/**
         * 文档加载成功提示
         * 
*/
        
public function fpLoaded():void
        {
            trace(
"reveice fpLoaded message!! this.width = " + this.width + " this.height" + this.height);
            
//setSize(parent.width,parent.height);
            var e:Event=new Event(FlashPaperLoader.FLASH_PAPER_LOADED);
            dispatchEvent( e );
            
//this.visible=true;
        }
        
/**
         * 设置缩放
         * 
*/
        
public function setZoom(value:Object):void
        {
            
if (this.visible)
            {
                sendFlashConn.send(
"_flashpaperloader","setCurrentZoom",value);
            }
        }

//    override protected function updateDisplayList( unscaledWidth:Number,
//                                                   unscaledHeight:Number ):void
//    {
//        if ( contentHolder )
//        {
//            // Adjust values so the FlashPaper document is displayed correctly
//            contentHolder.scaleX = 1.0;
//            contentHolder.scaleY = 1.0;
//            contentHolder.x = 0;
//            contentHolder.y = 0;
//    
//            contentHolder.scrollRect = new Rectangle( 0, 0, unscaledWidth, unscaledHeight );
//    
//            // When the content has loaded, call the setSize method so that the
//            // FlashPaper document sizes right in the available area
//            if ( Loader( contentHolder ).content )
//            {
//                setSize( unscaledWidth, unscaledHeight );
//                //this.setFocus();
//            }
//        }
//    }

        
//卸载此swf
        public function unload():void
        {
            
if(sendFlashConn != null
            {
                sendFlashConn.send(
"_flashpaperloader","unload");
                sendFlashConn 
= null;
            }
            
try
            {
                
if(recieveFlashConn != null
                {
                    recieveFlashConn.close();
                    recieveFlashConn 
= null;
                }
            }
catch(e:ArgumentError)
            {
                trace(e.toString());
                recieveFlashConn 
= null;
            }

            unloadAndStop(
true);
            
//System.gc();
        }
        
public function errUnload():void
        {
            
if(sendFlashConn != null
            {
                sendFlashConn.send(
"_flashpaperloader","unload");
                sendFlashConn 
= null;
            }
            
if(recieveFlashConn != null) recieveFlashConn = null;
            unloadAndStop(
true);
            
//System.gc();
        }

    } 
// end class
// end package


posted on 2010-04-06 14:04 SIMONE 阅读(637) 评论(0)  编辑  收藏 所属分类: JAVAflash

只有注册用户登录后才能发表评论。


网站导航: