首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTTPService/ResultEvent与Flex 3.2对Flex >= 3.5

HTTPService/ResultEvent与Flex 3.2对Flex >= 3.5
EN

Stack Overflow用户
提问于 2010-06-09 19:05:51
回答 2查看 2.5K关注 0票数 3

通过设计、退出或其他什么方式,Adobe更改了由ResultEvent对象触发的HTTPService的内容。

请看下面的示例:

代码语言:javascript
运行
复制
var httpService:HTTPService = myHTTPServices.getResults();
httpService.addEventListener(ResultEvent.RESULT,resultHandler);
httpService.send();

/**
 * Handels the login process
 */
function resultHandler(event:ResultEvent):void
{
    // get http service
    var httpService = (event.target as HTTPService);

    // do something
}

它的工作原理就像Flex 3.2的魅力。但是,当我尝试用Flex3.5或Flex4.0编译它时,event.target作为HTTPService是空的。

我发现event.target现在是HTTPOperation的一个实例。这很有趣,因为我在langref中找不到HTTPOperation。但是,我认为Flash的调试器的意思是mx.rpc.http.Operation。

调试器还显示event.target有一个私有属性httpService,这是我希望通过event.target获得的实例。但是它是私人的,所以event.target.httpService不能工作。

如果我只想删除EventListener,我可以将event.target转换为EventDispatcher。但是我需要使用来自HTTPService的方法。

那么:如何从HTTPService中获取ResultEvent实例?

任何帮助都将不胜感激。谢谢!

J.

EN

回答 2

Stack Overflow用户

发布于 2010-06-09 21:57:43

如果您进入这个过程,查看源代码是非常有用的。在OS上,rpc类在这里:/Applications/Adobe Flash Builder Beta 2/sdks/3.4.1/frameworks/projects/rpc/src

mx.rpc.http.HTTPService内部确实有一个名为HTTPOperation的内部类。它扩展了mx.rpc.http.AbstractOperation,而后者又扩展了mx.rpc.AbstractOperation。在AbstractOperation内部有一个getter方法get service,它希望返回所需的内容。

由于HTTPService是一个内部类,它实际上是私有的,因此您需要将其转换为AbstractOperation ( mx.rpc.http.AbstractOperationmx.rpc.AbstractOperation)。

所以,就像:

代码语言:javascript
运行
复制
function resultHandler(event:ResultEvent):void
{
    // get the operation
    var operation:AbstractOperation = AbstractOperation(event.target);

    // get http service
    var httpService:HTTPService = HTTPService(operation.service);
}

编辑:,我收回它!看起来Adobe正在为服务发送null,当它在构造HTTPOperation时调用超级服务器。因此,HTTPService只缓存在私有变量httpService中。我不知道他们为什么要瞒着你,但看起来你得把你自己的推荐信藏起来。

票数 2
EN

Stack Overflow用户

发布于 2011-11-17 06:45:05

我自己解决了这个问题。HTTPService中有一些属性可以从AbstractOperation中获得。例如,我使用属性request,它是一个对象:

代码语言:javascript
运行
复制
myService.request["service"] = myService;

然后,当我得到具有HTTPOperation in event.currentTarget的事件时,我会以这样的方式获得我的HTTPService

代码语言:javascript
运行
复制
 var eventService : HTTPService = HTTPService( AbstractOperation( event.currentTarget ).request["service"] );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3009010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档