LearningFMS3中文版第4章 共享函数

By:www.hcxmflash.cn Date:2009-04-26

4.5.简单例子:共享函数

这个例子非常酷。它允许在别人的浏览器上打开一个web页面。你可以从任何域打开一个页面,不只是你本地。下面是会用到的类和对像:

Classes

NetConnection

SharedObject

NetStatusEvent

SyncEvent

MouseEvent

URLRequest

InputText

Button

Functions

navigateToURL

Objects

InputText component

Button component

为了设置一个链接到另一个URL,as3.0使用URLRequest类和navigateToURL (),它们两个都是属于flash.net包。因为函数的参数是一个字符串(URL),这个参数将会成为共享对像。图4-4展示了代码的其中一块,共享对 像的改变到触发函数:

Figure 4-4. Path of shared object events

clip_image002

· 在步骤1中,一个data的属性”web”,给它指定了一个值:http://+文本框中输入的文本

· 共享对像的改变导致了一个同步事件,触发了checkSO函数

· 在步骤3中,遍历changeList数组,寻找cdode的值

· 在步骤中,找到了code 的值为”change”

· 步骤5启动了存储在web_so.data.web插槽中的web网址,

为了帮助您看看还有什么打算就在这个过程中,code值为“success”显示了在输出窗口web_so.data.web的值。如果您想要,您可以使用这一事件代码在用户端的窗口开启相同的网站。图4-5显示了应用程序正在工作:

图4-5. Opening Web page on remote client

clip_image004

使用图4-5为指导,贯彻落实下列步骤来建立完整的应用程序:

1. 建立一个SharedFunction.fla

2. 使用一个11号大小的Arial字体,类型为静态文本,输入: Enter URL for display on remote client。设置它的x=20,y=14

3. 从组件面板中拖 InputText 和 Button 组件到库中

4. 建立一个SharedFunction.as

5. SharedFunction.as中输入以下代码:

Example 4-4. SharedFunction.as

Code View:

    package

    {

      import fl.controls.Button;

      import fl.controls.TextInput;

      import flash.display.Sprite;

      import flash.events.SyncEvent;

      import flash.events.NetStatusEvent;

      import flash.events.MouseEvent;

      import flash.net.SharedObject;

      import flash.net.NetConnection;

      import flash.net.URLRequest;

      import flash.net.navigateToURL;

     

      public class SharedFunction extends Sprite

      {

            private var button:Button;

            private var web_so:SharedObject;

            private var nc:NetConnection;

            private var textInput:TextInput;

            private var rtmpGo:String;

            private var webURL:String;

            private var good:Boolean;

            private var webRequest:URLRequest;

     

            public function SharedFunction ()

            {

                 //Set up UIs

     

                 textInput=new TextInput();

                 textInput.setSize(150,24);

                 textInput.move (20,50);

                 addChild (textInput);

     

                 button=new Button();

                 button.width=150;

                 button.label="Open Web Page";

                 button.move (20,80);

                 button.addEventListener (MouseEvent.CLICK,sendWeb);

                 addChild (button);

     

                 //NetConnection

                 rtmpGo = "rtmp://192.168.0.11/basicSO";

                 nc = new NetConnection( );

                 nc.connect (rtmpGo);

                 nc.addEventListener (NetStatusEvent.NET_STATUS,doSO);

            }

     

            private function doSO (e:NetStatusEvent):void

            {

                 good=e.info.code == "NetConnection.Connect.Success";

                 if (good)

                 {

                       //Set up shared object

                       web_so=SharedObject.getRemote("web",nc.uri,false);

                       web_so.connect (nc);

                       web_so.addEventListener (SyncEvent.SYNC,checkSO);

                 }

            }

     

            private function checkSO (e:SyncEvent):void

            {

                 for (var chng:uint; chng<e.changeList.length; chng++)

                 {

                       switch (e.changeList[chng].code)

                       {

                            case "clear" :

                                 break;

     

                            case "success" :

                                 trace (web_so.data.web);

                                 break;

     

                            case "change" :

                                 webRequest=new URLRequest(web_so.data.web);

                                 navigateToURL (webRequest,"_blank");

                                 break;

                       }

                 }

            }

     

            private function sendWeb (e:MouseEvent):void

            {

     

                 web_so.setProperty ("web""http://"+ textInput.text);

     

            }

      }

    }

6. 切换到SharedFunction.fla文件中,选择文件-发布-添加一个HTML文件。

7. 如果你在单机上开发,有安装服务器的话,打开你的本地服务器的地址,导航到你的SharedFunction.html(http://localhost/myFMSapps/ 或者 http://127.0.0.1/myFMSapps/)。现在打开你的SharedFunction.fla,选择控制-测试影片。在文本输入框中输入一个网址,然后点击按纽。

当您这样做的测试,您会看到仅是在远程客户端打开一个网页。完整的URL名称会出现在输出窗口,以便让 您知道远程客户端实际上会打开什么。它很戏剧性,尽管,如果你在远程客户端测试应用程序。与LAN,如果您在一台电脑的浏览器上打开不同于您开发应用程序 的那台,您会看到网页在远程地点(另一台计算机上局域网)打开。

功能总结:

你可以同时打开两个导出的影片,暂命名为:a.swf和b.swf(a.swf和b.swf是同一个swf,这里为了区分)。在a.swf中输入一 个网址,b.swf会打开一个a.swf中输入的网址。同样,在b.swf中输入一个网址,a.swf会打开一个b.swf中输入的网址。

参与讨论去: 艾睿(Airia) 交朋友去:友吧推荐文章去:网站贴吧
企业招聘

北京中视力天文化传媒有限公司

公司简介:北京中视力天文化传媒有限公司,是CCTV.com央视国际网络有限公司投资的互联网研发团队。我们是天使的使者。。。

招聘FlashAS程序员详情点击

Copyright 2007-2008 51AS.com Extended in kingcms 鲁ICP备06001158号