Использование eventlisteners в классах - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь использовать обработчик событий в классе, но не могу заставить его работать!

Класс предназначен для обработки HTTPRequest, поэтому я использую ResultEvent.RESULT.Кто-нибудь может мне помочь?

Спасибо!

public class GetXML
{
    public var content:Object;
    public var url:String;
    public var database:HTTPService;

    public function GetXML()
    {
        this.content = content;
        this.url = url;
        this.database = database;
    }

    public function setURL(url:String):void {
        this.url = url;
    }

    public function getContent():void {
        this.database = new HTTPService();
        this.database.url = this.url;
        this.database.addEventListener(ResultEvent.RESULT, foo);
        this.database.send();
    }

    public function foo(event:ResultEvent):void {
        Alert.show("foo");
    }

}

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

На самом деле, согласно документации , класс ResultEvent имеет такую ​​константу.

Для меня:

    this.database.addEventListener(ResultEvent.RESULT, foo);

отлично работает и отображает окно оповещения. Я бы попробовал:

    this.database.addEventListener(Event.ACTIVATE, handleActivate);
    this.database.addEventListener(Event.DEACTIVATE, handleDeactivate);
    this.database.addEventListener(FaultEvent.FAULT, handleFault);
    this.database.addEventListener(InvokeEvent.INVOKE, handleInvoke);
    this.database.addEventListener(ResultEvent.RESULT, handleResult);

и проверьте оповещение для каждого или используйте Charles / HttpFox, чтобы проверить, есть ли у нас какие-либо запросы или ответы.

0 голосов
/ 15 декабря 2011
 this.database.addEventListener(ResultEvent.RESULT, foo);

Я думаю, этот пример кода был опубликован до завершения API.

Согласно документации , класс HTTPService отправляет два или пять событий (в зависимости от пакета).- «Конечно, новая система документации, которую использует Adobe, кажется не совсем идеальной).

Независимо от того, метод addEventListener () принимает в качестве первого аргумента строку, представляющую прослушиваемый тип события.В вашем коде вы используете «ResultEvent.RESULT».Согласно документации , класс ResultEvent не имеет такой константы.(также вы не импортируете класс ResultEvent, но я использую Flash, а не Flex, поэтому я не знаю, является ли класс ResultEvent базовым или нет)

Вы можете попробовать, как тест, просто используяфактические строки:

 this.database.addEventListener('result', fooResult);
 this.database.addEventListener('fault', fooFault);
 this.database.addEventListener('invoke', fooInvoke);

Да, я бы тоже предпочел использовать константы, но давайте посмотрим, сработает ли это сначала.:)

...