actionscript3与javascript通信

来源:互联网 发布:淘宝说已失效 编辑:程序博客网 时间:2024/05/18 19:20

 

 

注意:jsp文件和swf文件都放在跟目录下,加上跨域允许访问文件。

详细编写请参考flash cs3 帮助文档,里面有完整的例子 。

1.jsp页面。

 

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    
<head>
        
<title></title> 
                            
        
<meta http-equiv="Expires" content="Mon, 04 Dec 1999 21:29:02 GMT"/> 
         
<meta http-equiv="PRAGMA" content="NO-CACHE" />      
             
        
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        
<script type="text/javascript" src="../../js/swfobject.js"></script> 
        
<script type="text/javascript">
            swfobject.registerObject(
"myFlashContent""9.0.0""expressInstall.swf");
                  
             
var jsReady = false;
             
function isReady() {
                 
return jsReady;
             }

             
function pageInit() {
                 jsReady 
= true
                 
//document.forms["form1"].output.value += " " + "JavaScript is ready. ";
             }

             
function thisMovie(movieName) {
                 
if (navigator.appName.indexOf("Microsoft"!= -1{
                     
return window[movieName];
                 }
 else {
                     
return document[movieName];
                 }

             }
  
             
function sendToActionScript(value) {
                 thisMovie(
"myFlashContent").sendToActionScript(value);
             }
     
             
function sendToJavaScript(value) {
                 document.forms[
"form1"].output.value += "ActionScript says: " + value + " ";
             }


        
</script>  
    
</head>           
    
<body onload="pageInit();" style="background-color:antiquewhite">             
        
<div style="width:800px;height:600px;border:1px solid red;"> 
            
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600" id="myFlashContent">
                
<param name="movie" value="cut.swf" />
                
                
<!--[if !IE]>-->
                
<object type="application/x-shockwave-flash" data="cut.swf" width="800" height="600">
                
<!--<![endif]-->
                    
<href="http://www.adobe.com/go/getflashplayer">
                        
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                    
</a>
                
<!--[if !IE]>-->
                
</object>
                
<!--<![endif]-->
            
</object>    
        
</div>
           
         
<form name="form1" onsubmit="return false;">
         
<input type="text" name="input" value="" />
         
<input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br />
         
<textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea>
        
</form>
       
    
</body>
</html>

 

2.flash端

 

package 

    
import com.wdxc.ImageCut;
    
import com.wdxc.ImageRotation;
    
import flash.geom.Point;
    
import flash.geom.Rectangle;
    
import flash.net.URLLoader;
    
import flash.net.URLRequest;
    
import flash.events.* ;
    
import flash.display.*;
    
import flash.geom.* ;
    
import flash.net.*;
    
import flash.text.TextField;
    
import flash.utils.ByteArray;
    
import com.wdxc.util.* ;      
    
import fl.containers.ScrollPane;
    
import flash.display.Shape;
    
import fl.events.ScrollEvent;
    
import flash.external.ExternalInterface;
    
import flash.system.Security;
    
import flash.utils.Timer;
    
import flash.events.TimerEvent ;
    
    
    
/**  
     * 
@author luqinglong
     
*/
 
    
public class Main extends MovieClip
    
{
        
//存储加载进来的图片数据
        private var _bitmap:Bitmap = new Bitmap() ;                  
        
//进度条
        private var _progressbar:TextField ;
        
        
private var picname:String ; 
           
        
private var _imageCut:ImageCut = new ImageCut() ;
               
        
//场景引用
        public static var SCENE:MovieClip ;
        
        
//test
        var output:TextField = new TextField(); 
          
        
public function Main():void {      
            SCENE 
= this;          
            
//this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            
//this.loaderInfo.addEventListener(Event.COMPLETE, fileCompleteHandler) ; 
            menu_mc.cut_btn.addEventListener(MouseEvent.MOUSE_DOWN, this._imageCut.startCutPic);
            menu_mc.save_btn.addEventListener(MouseEvent.MOUSE_DOWN, save) ;
            menu_mc.rotate_btn.addEventListener(MouseEvent.MOUSE_DOWN, rotationHandler) ;  
            menu_mc.addword_btn.addEventListener(MouseEvent.CLICK, calljs) ;   
            load_btn.addEventListener(MouseEvent.MOUSE_DOWN, loadPic);     
            startLoadPic();     
            
this.checkAvailable();
            
                 
            output.y 
= 40;   
            output.width 
= 100;
            output.height 
= 100;
            output.multiline 
= true;
            output.wordWrap 
= true;
            output.border 
= true;      
            
this.addChild(output) ;  
            
        }
      
        
private function rotationHandler(e:MouseEvent):void {
            var ir:ImageRotation 
= new ImageRotation() ; 
            ir.x 
= menu_mc.x ;
            ir.y 
= menu_mc.y ;     
            
this.stage.addChild(ir); 
            
        }

          
        
public function set bitmap(bp:Bitmap):void {
            
this._bitmap = bp ;
        }
 
            
        
public function get bitmap():Bitmap {
            
return this._bitmap ;
        }

        
        
/**
         * flash文件导入完成
         * 
@param    e
         
*/

        
/*
        private function fileCompleteHandler(e:Event):void {
            this.removeChild(_progressbar);                  
            menu_mc.cut_btn.addEventListener(MouseEvent.MOUSE_DOWN, this._imageCut.startCutPic);
            menu_mc.save_btn.addEventListener(MouseEvent.MOUSE_DOWN, save) ;
            load_btn.addEventListener(MouseEvent.MOUSE_DOWN, loadPic);     
                 
            this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
            this.loaderInfo.removeEventListener(Event.COMPLETE, fileCompleteHandler) ;       

        }
*/
  
            
        
/**  
         * 导入swf文件时,创建进度条
         
*/

        
/*
        private function progressHandler(e:ProgressEvent):void {
            _progressbar = new TextField() ;
            _progressbar.text = "进度条" ;        
            this.addChild(_progressbar) ;     
        }
*/
       
              
        
public function startLoadPic():void {
            var url:String 
= "http://192.168.0.211:8080/photo/LoaderPhotoServlet";
            
            var param:URLVariables 
= new URLVariables() ;
            
            param.photoid 
= "267005" ;  
            param.radom 
= Math.floor(Math.random() * 1000);
            
            var request:URLRequest 
= new URLRequest(url);   
            request.data 
= param ;
            var loader :Loader 
= new Loader();
            loader.load(request);      
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, picLoadCompleteHandler);
        }

        
        
public function loadPic(e:MouseEvent):void {         
            var url:String 
= "http://192.168.0.211:8080/photo/LoaderPhotoServlet"
                           
            
//var url = "http://192.168.0.211:8080/photos/8934/24808/267005_1.jpg";
                     
            
//var url = "E:/a.jpg" ;
            
            var param:URLVariables 
= new URLVariables() ;
            
            param.photoid 
= "267005" ;  
            param.radom 
= Math.floor(Math.random() * 1000);
            
            
//picSource+="&"+Math.floor(Math.random()*1000);     
            
//var picSource:String = "F:/a.jpg" ;   
          
            
//var _urlLoader:URLLoader = new URLLoader();  
            
//_urlLoader.dataFormat = URLLoaderDataFormat.BINARY ;
            
//_urlLoader.load(request);             
            
//_urlLoader.addEventListener(Event.COMPLETE, picLoadCompleteHandler);  
            
            var request:URLRequest 
= new URLRequest(url);   
            request.data 
= param ;
            var loader :Loader 
= new Loader();
            loader.load(request);      
            
//loader.
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, picLoadCompleteHandler);
        }
       
            
        
//public var temp:Sprite = new Sprite();
           
        
/**  
         * 导入二进制完成
         * 
@param    e    
         
*/
    
        
private function picLoadCompleteHandler(e:Event):void {
                
            var loader:Loader 
= e.target.loader as Loader;        
              
            var _bitmapdata:BitmapData 
= new BitmapData(loader.width, loader.height);
            _bitmapdata.draw(loader);  
                 
            
if(this._bitmap.bitmapData!=null)
                
this._bitmap.bitmapData.dispose() ; 
                          
            
this._bitmap.bitmapData = _bitmapdata;    
                   
            _bitmap.x 
=90   ;     
            _bitmap.y 
= 150 ;   
             
            
            
//temp.addChild(this._bitmap);
            
            
            
this.addChild(_bitmap);  
              
            
//设置原图引用                 
            this._imageCut.bitmap = this._bitmap ;                   
            
this.addChild(this._imageCut);
               
            e.currentTarget.removeEventListener(Event.COMPLETE, picLoadCompleteHandler); 
                  
        }
   
          
        
public function reset():void {
            
this._bitmap.rotation = 0 ;
            
this._bitmap.x = 90 ;
            
this._bitmap.y = 150 ;
            
        }

        
        
public function checkAvailable():void {
            
if (ExternalInterface.available){
                
try {    
                    ExternalInterface.addCallback(
"sendToActionScript", receivedFromJavaScript);
                    
if (checkJavaScriptReady()) {
                        trace(
"JavaScript is ready. ");
                    }
 else 
                                 
                        trace(
"JavaScript is not ready, creating timer. ");
                        var readyTimer:Timer 
= new Timer(1000);
                        readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
                        readyTimer.start();   
                    }

                }
catch (error:SecurityError) {
                    trace(
"A SecurityError occurred: " + error.message + " ");
                }
catch (error:Error) {
                    trace(
"An Error occurred: " + error.message + " ");
                }
   
            }
else{   
                trace(
"External interface is not available for this container.");
            }

         
        }

         
        
private function timerHandler(event:TimerEvent):void {
            trace(
"Checking JavaScript status... ");
            var isReady:Boolean 
= checkJavaScriptReady(); 
            output.appendText(
"123");
            
if (isReady) {       
                trace(
"JavaScript is ready. ");
                Timer(event.target).stop();
            }

        }

                  
                  
        
private function receivedFromJavaScript(value:String):void {
            
//trace("JavaScript says: " + value + " ");
            output.text = value ;    
            
        }

        
private function checkJavaScriptReady():Boolean {
            var isReady:Boolean 
= ExternalInterface.call("isReady");
            
return isReady;
        }

               
        
private function calljs(event:MouseEvent):void {
            
if (ExternalInterface.available) {    
                ExternalInterface.call(
"sendToJavaScript""123");
            }

        }

        
        
         
/****     
         * 转换为字节数组,显示图片到场景
         * 
@param    e 
         
*/
    
        
/* 
        private function ConvertionHandler(e:Event):void { 
            var loader:Loader = e.target.loader as Loader;   
            var _bitmapdata:BitmapData= new BitmapData(loader.width, loader.height);
            _bitmapdata.draw(loader);
            
            if(this._bitmap.bitmapData!=null)
                this._bitmap.bitmapData.dispose() ; 
                      
            this._bitmap.bitmapData = _bitmapdata;        
            _bitmap.x =90   ;     
            _bitmap.y =150 ;        
            this.addChild(_bitmap);  
             
            //设置原图引用                 
            this._imageCut.bitmap = this._bitmap ;               
            this.addChild(this._imageCut);
            e.currentTarget.removeEventListener(Event.COMPLETE, ConvertionHandler);           
        }
        
*/

        
private function save(e:MouseEvent):void {
            
//var url :String = _url+"?"+Math.floor(Math.random()*1000) ;   
            
//this.submit(bitmapdata,url);   
        }

    }
   
}

 
原创粉丝点击