视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
as与js通信文档
2025-09-30 22:54:59 责编:小OO
文档
As中主要从JS文件获取用户信息和用户好友,即调用js中的getInfo和getFriends函数

Transport.as

protected function getStandardVars() : URLVariables

        {

            var params:URLVariables = new URLVariables();

            var timestamp:Number = new Date().valueOf();

            params.time_stamp = timestamp;

            params.app_id = Config.getConfig("appId");

            params.app_user_id = Config.getConfig("appUserId");

            if(Util.isLocal()){//判断是否本地

                params.user_id = Config.getConfig("userId");

            }else {//调用JSDataManager.getInstance()方法,获取用户信息

           params.user_id=JSDataManager.getInstance().userInfo._userId;

            }

            params.network = Config.getConfig("network");

            params.session_key = Config.getConfig("sessionKey");

            params.flash_version = Config.getConfig("version");

            return params;

        }

public function performAppInit(success:Function, fail:Function) : void

        {

            var params:URLVariables = this.getStandardVars();

// JSDataManager下的getFriendIDList()方法,获取好友列表

        var fids:String=JSDataManager.getInstance().getFriendIDList();

            if(fids){// 原来的param3是这个参数,我们现在修改成这样子即可,这个应该永远都存在吧

                params.fids = fids;

            }

             var command:Command = new Command();

command.execute(params,INIT_METHOD,success,URLRequestMethod.POST,fail);

        }

JSDataManger.as

private var _userInfo:Object;

private function getUserInfo():Object {

            var result:Object = null;

            var functionName:String = Config.getConfig("getInfoMethodName").toString();// 获取用户的信息

            trace("functionName " + functionName);

            try {

//调用js中的getInfo函数

                result = ExternalInterface.call(functionName) as Object;

                toString(result);

            }catch(error:Error){

                trace("get functionName " + functionName + "error");

            }

            return result;

        }

private function getUserFriends():Object {

            var result:Object = null;

            var functionName:String = Config.getConfig("friendsMethodName").toString();// 获取用户的信息

            trace("functionName " + functionName);

            try {

     //调用js中的getFriends函数

                result = ExternalInterface.call(functionName);

                var temp:Array = result as Array;

                var exist:Boolean;// 自己是否存在于好友列表中

                for each(var obj:Object in temp){

                    if(obj._userId == this.userInfo._userId){

                        exist = true;

                        break;

                    }

                }

                if(!exist){

                    if(this.userInfo){

                        (result as Array).push(this.userInfo);

                    }

                }

            }catch(error:Error){

                trace("get functionName " + functionName + "error");

            }

            return result;

        }

        

        /**

         * 初始化要传递给后台的好友数据的一个列表

         */ 

public function getFriendIDList():String {

            var result:String;

            var ids:Array = [];

            for each(var friend:Object in this.friends){

                if(friend._userId){// 不能是空,如果是空的话,会有一些问题

                    ids.push(friend._userId);

                }

            }

            result = ids.join();

            trace("ids " + result);

            return result;

        }

Preloader.as

Config.as

Config.setConfig("getInfoMethodName","getInfo");

Config.setConfig("friendsMethodName","getFriends");

Config.as

public static function setConfig(name:String,value:Object):void {

            dictionary[name] = value; 

        }

        

        /**

         * @name:String 具体的key值

         * @target:MovieClip 特别是在非movieClip的时候获取时会出现空对象的问题

         * 因为在加载Perloader的时候,主工程并没有加载完成

         * 所以我们可以把部分Config移植到Perloader里

         * 具体的外部传入的params我们也是同样能获取的

         */ 

public static function getConfig(name:String):Object {

            var v:String = "";

            var main:Main = Main.Get();

            if(main){

                if(main.stage){

                    v = main.stage.loaderInfo.parameters[name];

                }else if(main.parent){

                    v = main.parent.loaderInfo.parameters[name];

                }else {

                    v = main.loaderInfo.parameters[name];

                }

            }

            if(v != null && v != ""){

                return v;

            }else {

                v = dictionary[name];

            }

            if(v != null && v != ""){

                return v;

            }else {

                return "";

            }下载本文

显示全文
专题