Flex、flash(as3)获取SWF后面的参数

写了一个例子。

先说flash as3吧,可以用root.loaderInfo.parameters

AS3类 GSPManager.as 代码:   

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;    
    public class GSPManager extends Sprite
    {
        public 
function GSPManager()
        {
            
this.addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
        }
        
        private 
function addedToStageHandler(e:Event):void
        {
            
this.removeEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
            
            init();
        }
        private 
function init():void
        {            
            
var out_txt:TextField = new TextField();
            
//边框
            out_txt.border = true;
            
//边框颜色
            out_txt.borderColor = 0x80FF3300;
            
//大小
            out_txt.width = 100;
            out_txt.height 
= 20;
            
//位置
            out_txt.x = (stage.stageWidth - out_txt.width)/2;
            out_txt.y = (stage.stageHeight - out_txt.height)/2;
            //添加到舞台
            addChild(out_txt);
            
            
//获得参数对象
            var param:Object = root.loaderInfo.parameters;
              
if (param["name"]!=null
            {
                      out_txt.text 
= param["name"+ param["num"];
                      trace(
"value:"+param["name"]);
                              
//判断
              } 
            
else 
            {
                    out_txt.text 
= "null";
                    trace(
"value:null");
              }
        }        
    }
}

GetSwfParam.fla 绑定的文档类为GSPManager.as ,在文档类绑定框里写GSPManager这个就可以了

之后编译出来的GetSwfParam.swf 就可以添加到页面了

Java web页面代码:  

<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
  
</head>
  
  
<body>
    
<object id="g" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/_cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="200">
      
<param name="movie" value="GetSwfParam.swf?name=sange&num=66" />
    <param name="quality" value="high" />
    <param name="allowScriptAccess" value="sameDomain" />    
    <param name="scale" value="exactfit" />
    <embed name="g" src="GetSwfParam.swf" quality="high" scale="exactfit" align="middle" play="true" loop="false" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="200" ></embed>
  </object>
  </body>
</html>

 

 这里要说的是swf后有很多参数就用&符号 , 比如GetSwfParam.swf?name=sange&num=66&id=1

 

现在说Flex了,因为让同事也做了这样的东西,但他只会Flex,他没弄出来,所以我试下,发现用root没反映,但我很肯定Flex应该也可以弄出来,发现跟flash as3确实不同,不能用root,因为Flex中没有root这个概念。问了群里的人,收获大了,原来就Application,哈哈,不就是根节点么,也就相当于root,就是名称不一样。

Flex就用Application.application.parameters

GetSwfParam.mxml 代码: 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#ffffff" layout="absolute" creationComplete="init()">
    
<mx:Script>
        
<![CDATA[
            private 
function init():void
            {
                
//获得参数对象                
                var param:Object = Application.application.parameters;
                
if(param["name"!= null)
                {
                    mytxt.text 
= param["name"];
                }
                
else
                {
                    mytxt.text 
= "null";
                }
            }
        ]]
>
    
</mx:Script>
    <mx:TextInput id="mytxt" x="60" y="47"/>
</mx:Application>

 

把编译好的swf添加到页面就可以了。同上,Java web页面代码不变。

posted on 2011-10-14 17:26  AS3.0  阅读(539)  评论(0编辑  收藏  举报

导航