Flex与浏览器交互

在用flex做Web应用时为了扩展应用程序功能,势必会更多的同浏览器进行交互,这样就会用到下面介绍的知识
1、在Flex中实现URL 跳转(使用flash.net.navigateToURL()方法如:)
/*
     * param1: 要跳转的URL
     * param2: 跳转方式 _blank /_self
     */
    navigateToURL(new URLRequest("http://blog.csdn.net/xingjunli"),"_blank");

2、使用FlashVars传替换参数(使用Application.application.parameters属性)
    页面嵌入SWF文件代码(我们可以通过JS动态来设置FlashVars信息已达到数据交互的目的)
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="mySwf">
                <param name="movie" value="main.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#869ca7" />
                <param name="allowScriptAccess" value="sameDomain" />
        <param name="FlashVars" value="UserName=Andy_liu&Age=18&Address=HongKong" />
            </object>

Flex中获取参数代码:
private function onFlashVars(e:MouseEvent):void //获取页面参数
        {
            var parameters:Object = Application.application.parameters;
            labURL.text = Application.application.url.toString();            // http://localhost:8889/main.swf
            var param1:String = parameters.UserName;                    // Andy_liu
            var param2:int = parseInt(parameters.Age);                    // 18
            var param3:String = parameters.Address;                    // HongKong
            /*
            txtParam1.text = param1;
            txtParam2.text = String(param2);
            txtParam3.text = param3;
            */
          
        }

3、在Flex中调用JavaScript函数
    先在页面中完成js function(注在Flex中只能调用当前页面引入的JS函数)
function ShowUserInfo(name,age,address)
     {
        alert("Name:" + name+"\n" + "Age:" + age + "\n" +"Address"+address);
        return "Call Successful!"
     }

Flex中调用方法并获取JS function返回值( 使用ExternalInterface.call()方法):

private function onCallJS(e:MouseEvent):void
    {
        /*
         * param1:当前页JS function 方法名
         * param...传递的参数0-N个
         */
        var resultValue:String = ExternalInterface.call("ShowUserInfo",txtParam1.text,txtParam2.text,txtParam3.text);
        //resultValue = Call Successful!
    }

4、在JavaScript中调用ActionScript函数
    页面中调用的JS 函数

function CallFlexMethod()
     {
        var swf="mySwf";
        var container;
        //alert(navigator.appName);
        if(navigator.appName.indexOf("Microsoft")>=0)
        {
            container = document;
        }
        else
        {
            container = window;
        }
        container[swf].flexFunction1();                    //无参方法
        container[swf].flexFunction2("myHtmlRequest!");//参数传递方法
        alert(container[swf].flexFunction3());            //含返回值方法
     }

Flex中注册和调用执行的方法:

//重要必须在Flex中执行如下注册 才能在JS中调用
    private function registerCallBacks():void
    {
        ExternalInterface.addCallback("flexFunction1",jsCallBack1);
        ExternalInterface.addCallback("flexFunction2",jsCallBack2);
        ExternalInterface.addCallback("flexFunction3",jsCallBack3);
    }
    private function jsCallBack1():void
    {
        Alert.show("Call First Flex Method!");
    }
    private function jsCallBack2(params:*):void
    {
        Alert.show("Call Method2:" + String(params));
    }
    private function jsCallBack3():String
    {
        return Math.random().toString();  
    }

5、BrowserManager管理组件应用
     BrowserManager 是一个 Singleton 管理器,用于充当浏览器和应用程序之间的代理。使用它可以访问浏览器地址栏中的 URL,这与访问 JavaScript 中的 document.location 属性类似。当 url 属性发生更改时调度这些事件。然后侦听器可以响应、更改该 URL 或阻止其它对象获取此事件。
      获得bm实例:
private var bm:IBrowserManager = BrowserManager.getInstance();

a、获取URL传递的参数:
private function getBrowserValue():void
    {
        //URL = "http://localhost/browser/main.html#name=peter;age=25;address=shenzhen china"
        var o:Object = URLUtil.stringToObject(bm.fragment);
        txtURLName.text = o.name;            // peter
        txtURLAge.text = o.age;                // 25
        txtURLAddress.text = o.address;        // shenzhen china
    }

b、获取浏览器信息(请求URL:“http://localhost:8889/main.html#name=peter;age=25;address=shenzhen%20china”)
private function onBrowserManager(e:MouseEvent):void
        {
            txtBMOutPut.text += "Full URL: \n" + bm.url + "\n\n";
            txtBMOutPut.text += "Base URL: \n" + bm.base + "\n\n";
            txtBMOutPut.text += "URL Fragment URL: \n" + bm.fragment + "\n-----------\n";
          
            var o:Object = URLUtil.stringToObject(bm.fragment);
            txtBMOutPut.text += "Object: \n" + ObjectUtil.toString(o) + "\n\n";
            txtBMOutPut.text += "Name: \n" + o.name + "\n\n";
            txtBMOutPut.text += "Age: \n" + o.age + "\n\n";
            txtBMOutPut.text += "Address: \n" + o.address + "\n-----------\n";
          
            txtBMOutPut.text += "URL Port: \n" + URLUtil.getPort(bm.url) + "\n\n";
            txtBMOutPut.text += "URL Protocol: \n" + URLUtil.getProtocol(bm.url) + "\n\n";
            txtBMOutPut.text += "URL Server: \n" + URLUtil.getServerName(bm.url) + "\n\n";
            txtBMOutPut.text += "URL Server with Port: \n" + URLUtil.getServerNameWithPort(bm.url) + "\n-----------\n";
            /* 执行结果:
            Full URL:
            http://localhost:8889/main.html#name=peter;age=25;address=shenzhen%20china
            Base URL:
            http://localhost:8889/main.html
            URL Fragment URL:
            name=peter;age=25;address=shenzhen%20china
            -----------
            Object:
            (Object)#0
              address = "shenzhen china"
              age = 25
              name = "peter"
            Name:
            peter
            Age:
            25
            Address:
            shenzhen china
            -----------
            URL Port:
            8889
            URL Protocol:
            http
            URL Server:
            localhost
            URL Server with Port:
            localhost:8889
            -----------
            */
        }

c、BrowserManager还包含其它一些浏览器的扩展方法如:bm.setTitle("新标题:正在培训!")修改页面标题等...参考http://livedocs.adobe.com/flex/3/html/help.html?content=deep_linking_3.html
6、在Flex中通过实现mx.managers.IHistoryManagerClinet接口来实现自定义历史记录管理器
自定义textInput
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" text="Change Me!" implements="mx.managers.IHistoryManagerClient"
creationComplete="mx.managers.HistoryManager.register(this);" change="textChanged(event)">
    <mx:Script>
        <!--[CDATA[
            import mx.managers.HistoryManager;
            private function textChanged(e:Event):void
            {
                HistoryManager.save();
            }
            public function saveState():Object
            {
                return {text:text};
            }
            public function loadState(state:Object):void
            {
                var newState:String = state?state.text:"";
                if(newState != text)
                {
                    text = unescape(newState);
                }
            }
        ]]-->
    </mx:Script>
</mx:TextInput>

当我们在使用上面自定义的TextInput时会发现在浏览器URL中会动态创建修入如这样的一些信息“#app=a4e4&8211-text=asdfasdfasdfsd%20”故FLEX通过浏览器URL记录SWF文件中组件的变化已实现保存历史记录数据已实现历史记录管理!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值