Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Событие имеет метод, который может возвращать что-то (http://www.flasher.ru/forum/showthread.php?t=198129)

Dip52 20.04.2013 15:15

Событие имеет метод, который может возвращать что-то
 
Здравствуйте.
Можно ли сделать так, чтобы функция, например с аргументом: event:Event, могла что-то возвращать и при этом вызываться благодаря событию?

Код AS3:

stage.addEventListener(Event.ENTER_FRAME, updateFrames);
function updateFrames(event:Event):Boolean
{
        return true;
}


chamele0n 20.04.2013 15:22

никогда такой вопрос не возникал, а можо узнать в какой реализации это можно использовать ?

Zebestov 20.04.2013 16:16

Dip52, ответь для себя на вопрос, а кто это вот return true; получит?

cleptoman 20.04.2013 18:12

а куда возвращать то?.

в случае в dispatchEvent это имеет хоть какой-то смысл..в контексте вашего примера я его не вижу.

Dip52 20.04.2013 23:56

Цитата:

Сообщение от Zebestov (Сообщение 1130576)
Dip52, ответь для себя на вопрос, а кто это вот return true; получит?

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

Zebestov 21.04.2013 00:18

У меня это всегда плохо получалось, но я попробую поиграть в ясновидящего: тебе нужно, чтобы обработчик менял какую-то "переменную" у объекта, который послал обрабатываемое в этот момент событие? Ну для этого надо в этом объекте завести публичное поле (например), и менять его в обработчике как-то так:
Код AS3:

// someObject у нас является экземпляром некоего SomeClass
someObject.addEventListener(Event.ENTER_FRAME, updateFrames);
function updateFrames(event:Event):void
{
        (event.target as SomeClass).somePublicBooleanVar = true;
}


Dip52 21.04.2013 00:25

Цитата:

Сообщение от Zebestov (Сообщение 1130631)
У меня это всегда плохо получалось, но я попробую поиграть в ясновидящего: тебе нужно, чтобы обработчик менял какую-то "переменную" у объекта, который послал обрабатываемое в этот момент событие? Ну для этого надо в этом объекте завести публичное поле (например), и менять его в обработчике как-то так:
Код AS3:

// someObject у нас является экземпляром некоего SomeClass
someObject.addEventListener(Event.ENTER_FRAME, updateFrames);
function updateFrames(event:Event):void
{
        (event.target as SomeClass).somePublicBooleanVar = true;
}


Нет, мне нужно чтобы событие вызывало функцию, которая возвращает данные и эти данные (если такое возможно) как-то привязывались к переменной.

Как-то так:

Код AS3:

var test:Boolean = stage.addEventListener(Event.ENTER_FRAME, upFr);
 
function upFr(event:Event):void
{
    return true;
}
 
if(test)
{
    trace("true");
}


GBee 21.04.2013 01:07

:)
Цитата:

Нет, мне нужно чтобы событие вызывало функцию, которая возвращает данные и эти данные (если такое возможно) как-то привязывались к переменной.
Код AS3:

stage.addEventListener(Event.ENTER_FRAME, upFr);
function upFr(event:Event = null):Boolean
{
    if(event)
        test = upFr();
    return !event;
}


Zebestov 21.04.2013 01:09

Ого о0!

Код AS3:

var test:Boolean = stage.addEventListener(Event.ENTER_FRAME, upFr);

Метод addEventListener ничего не возвращает. Он всего лишь регистрирует метод-обработчик upFr() для события ENTER_FRAME объекта stage.

А уже в обработчике вполне себе можно сделать так
Код AS3:

function upFr(event:Event):void
{
    test = true;
}

Ну а вот это вообще ни о чем
Код AS3:

if (test)
{
    trace("true");
}

Ну проверит оно один раз этот твой test, ну выведет оно "true", если в этот самый момент уже в программе test равен true, а дальше что? Если тебе нужно проверять это каждый раз после события ENTER_FRAME, то делай уже как-то так
Код AS3:

function upFr(event:Event):void
{
    test = true;
    checkoutTest();
}
 
function checkoutTest():void
{
    if (test)
    {
        trace("true");
    }
}


Babylon 21.04.2013 10:59

Я понял вопрос так: Как с событием передать еще и cсылку на объект. Для этого обычно наследуются от класса Event, пример:

Добавлено через 50 секунд
Код AS3:

public class NodeViewEvent extends Event {
                public static var NODE_VIEW_LAYOUT:String ="NODE_VIEW_LAYOUT";
                private var _nodeView:NodeView;
 
                public function NodeViewEvent(type : String, view:NodeView, bubbles : Boolean = false, cancelable : Boolean = false) {
                        super(type, bubbles, cancelable);
                        _nodeView = view;
 
                }
                override public function clone():Event{
                        return (new NodeViewEvent(type, _nodeView, bubbles, cancelable));
                }
                public function get view():NodeView{ return _nodeView;}
        }



Часовой пояс GMT +4, время: 07:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.