actionscript-3 - Flex 3.2 与 Flex >= 3.5 的 HTTPService/ResultEvent

标签 actionscript-3 flex3 flex4 httpservice

通过设计决策或其他任何方式,Adobe 更改了由 HTTPService 对象触发的 ResultEvent 的内容。

看看下面的例子:

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 配合得很好。但是当我尝试使用 Flex 3.5 或 Flex 4.0 编译它时 event.target as HTTPService 为 null。

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

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

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

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

如有任何帮助,我们将不胜感激。谢谢!

J.

最佳答案

如果你深入了解这个问题,那么通读源代码是很有用的。在 OS X 上,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.AbstractOperationAbstractOperation 内部是一个 getter 方法 get service,它看起来会返回您需要的内容。

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

所以像这样:

function resultHandler(event:ResultEvent):void
{
    // get the operation
    var operation:AbstractOperation = AbstractOperation(event.target);

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

编辑:我收回它!看起来 Adob​​e 在构建 HTTPOperation 时调用 super 时正在为服务发送 null。因此,HTTPService 仅缓存在私有(private)变量 httpService 中。我不知道他们为什么对你隐瞒它,但看起来你必须保留自己的引用资料。

关于actionscript-3 - Flex 3.2 与 Flex >= 3.5 的 HTTPService/ResultEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009010/

相关文章:

javascript - JavaScript 和 ActionScript 3 之间的主要区别是什么?

actionscript-3 - AS3 : Working with multiple sounds & channels - are there any good libraries for this?

actionscript-3 - 从flex3中的自定义按钮调用放大和缩小上下文菜单

apache-flex - 如何在 Itemrenderer 及其父级之间传递事件

javascript - 可以将 Action Script FileReference 对象发送到 Javascript 并转换为 File 对象吗?

java - 集成 Java 和 Flex

.net - 数据从 .net 后端推送到 flex 应用程序

css - Adobe Flex 3 到 Flex 4 : Rotated Text Disappears on Embedded font

apache-flex - 在 Flex 列表/数据网格中设置前景和背景选择颜色的样式

apache-flex - 如何移除 Flex 4 TextArea 组件的边框( Spark 主题光环)