WEB开发网
开发学院图形图像Flash 基于flex4技术从零开发flex博客系统 : 4 数据存储... 阅读

基于flex4技术从零开发flex博客系统 : 4 数据存储

 2009-05-05 12:06:22 来源:WEB开发网   
核心提示: 其中configRemoting将在Application initialize时调用,用于初始化RemoteObject对象,基于flex4技术从零开发flex博客系统 : 4 数据存储(5),BasicLayout用于声明当前Application使用absolate布局,详见new

其中configRemoting将在Application initialize时调用,用于初始化RemoteObject对象。BasicLayout用于声明当前Application使用absolate布局,详见new language tag Private and layout in flex4。

编译,运行,点击greeting,弹出如下提示框:

基于flex4技术从零开发flex博客系统 : 4 数据存储

四,有问题,需要调试了

貌似没有问题,貌似数据已经存进Google了。但是第二次单击提交,就有问题了,Alert了两次。为什么点击一次button,弹出了两个提示框?难道接口被调用了二次?

为了找到原因所在,我必须要采用debug模式了。在本地采用debug模式之前,需修改Flex Project的属性里的output folder url为http://localhost:8080/,并把RemoteObject的endpoint设为http://localhost:8080/weborb.wo。但是在正式布署到Google app engine时,需记得移除这些设置。

通过debug,我发现greet2接口确实仅调用了一次,但是Alert.show却执行了两次。这说明AbstractOperation是一个引用对象,第一次调用_remotingObj.getOperation(”greet2″)返回的对象与第二次调用返回的对象是同一个对象,我们在同一个对象上添加了两次ResultEvent事件监听。handler做为内嵌函数变量,虽然前后名称相同,但因是局部函数变量,所以内部ID并不相同,是两个完全不同的对象。结果便是,每单击一次,Alert便会多一次。

为了验证我的想法,我查看了RemoteObject的sdk源码,在其及其父类AbstractService中,有如下相关代码:

override public function getOperation(name:String):AbstractOperation
    {
        var op:AbstractOperation = super.getOperation(name);
        if (op == null)
        {
            op = new Operation(this, name);
            _operations[name] = op;
            op.asyncRequest = asyncRequest;
        }
        return op;
    }

    public function getOperation(name:String):AbstractOperation
    {
        var o:Object = _operations[name];
        var op:AbstractOperation = (o is AbstractOperation) ? AbstractOperation(o) : null;
        return op;
    }

上一页  1 2 3 4 5 6  下一页

Tags:基于 flex 技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接