ActionScript 3.0 с помощью закрытий для обработчиков событий

  1. cd d: \ Anaconda3 \ Scripts \
  2. откройте CMD в папке
  3. в терминале, введите: список conda, чтобы получить пакеты, установленные с помощью conda. для пакетов, которые распознает pip, введите: pip list Numpy find in list?
  4. Попробуйте conda install -n, например, conda install -n ml_test numpy
  5. И, вы можете создать анаконду ENV с python 3.6 для экспериментов и см. https: // anaconda. org / anaconda / numpy ?

    Может быть, доступ из другой среды Anaconda к Pycharm решит проблему или станет разъяснением истинного источника проблемы?

    Извините для возможно неточной грамматики. Я сделал все возможное:)

15
задан FlySwat 7 October 2008 в 18:06
поделиться

8 ответов

Вот универсальный способ удалить слушателей события, которых я использовал на производственных проектах


addEventListener
(
    Event.ACTIVATE, 
    function(event:Event):void
    {
        (event.target as EventDispatcher).removeEventListener(event.type, arguments.callee)             
    }
)
36
ответ дан 1 December 2019 в 00:30
поделиться

Я не уверен, будет ли это работать, но его стоящее того, чтобы попытаться:

root.removeEventListener("click", arguments.callee );
[еще 113] информация об этом может быть найдена Flex Ленг касательно

0
ответ дан 1 December 2019 в 00:30
поделиться

Можно думать о функции () ключевое слово как конструктор, создавая новый объект (закрытие) каждый раз. Поэтому, если Вы создаете закрытие только для в качестве параметра и не сохраняете ссылку нигде, нет никакого способа овладеть "тем же" закрытием где-то в другом месте.

очевидное решение - то, что Вы не любите, определяя функцию перед использованием его. Конечно, это может все еще быть полное закрытие и не только 'подобная помехам' функция. просто определите его в контексте, который Вы хотите и присваиваете его локальной переменной.

3
ответ дан 1 December 2019 в 00:30
поделиться

Просто примечание стороны по Вашему коду, с которым я столкнулся в Flex В Недельном наборе учебных руководств на веб-сайте Adobe. Там, они сказали, что необходимо всегда использовать константы для типов событий, а не строки. Тем путем Вы получаете защиту опечатки. Если Вы заставляете опечатку в конечном счете ввести строку (как, говорят "clse"), Ваш обработчик событий будет зарегистрирован, но конечно никогда не вызывал. Вместо этого используйте Событие. ЗАКРОЙТЕСЬ, таким образом, компилятор найдет опечатку.

0
ответ дан 1 December 2019 в 00:30
поделиться

Это слишком много не отличается, чем использование определенной функции, но возможно это удовлетворит Ваши потребности. Помните, что Функции являются первоклассными объектами в ActionScript, и можно сохранить и раздать их как переменные.

protected function addListener()
{
    m_handler = function(in_event:Event) { removeEventListener(MouseEvent.CLICK, m_handler); m_handler=null}
    addEventListener(MouseEvent.CLICK, m_handler)
}
protected var m_handler:Function
0
ответ дан 1 December 2019 в 00:30
поделиться

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

Затем в обработчике событий Вы просто проверяете _clickEnabled, и если его ложь Вы всего return сразу.

Затем можно включить и отключить полное событие, не отсоединяясь и повторно прикрепляя его.

-1
ответ дан 1 December 2019 в 00:30
поделиться

Я обнаружил, что много занимаюсь этим, поэтому попробовал это. Кажется, все работает нормально.

addSelfDestructiveEventListener('roomRenderer', 'complete', trackAction, 'floorChanged');

private function addSelfDestructiveEventListener(listenee:*, event:String, functionToCall:Function, StringArgs:String):void
{
    this[listenee].addEventListener(event, function(event:Event):void
        {
            (event.target as EventDispatcher).removeEventListener(event.type, arguments.callee);
            functionToCall(StringArgs);
        })
}
0
ответ дан 1 December 2019 в 00:30
поделиться

Я иногда использую вот это:

var closure:Function = null;
root.addEventListener("click", 
   closure = function () 
   { 
      navigateToURL(ClickURLRequest,"_self"); 
   });

root.removeEventListener("click", closure);
2
ответ дан 1 December 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: