0

Привет всем) Мне нужна помощь в понимании рамки Cairngorm для flex.flex cairngorm addComand не работает

Я кодирую простой слайдер приложения. У меня есть основной класс, в котором у меня есть тег

<fx:Declarations> 
    <control:AppController id="appController" /> 
</fx:Declarations> 

себя Класс AppController расширяет FrontController с функцией конструктора:

public function AppController() 
    { 
     addCommand(SliderEvent.BUILD, SliderBuildCommand); 
     addCommand(SliderEvent.TRANSITION, SliderTransitionCommand); 
    } 

и, наконец, код класса SliderBuildCommand:

public function SliderBuildCommand(){} 

    public function execute(event:CairngormEvent):void 
    { 
     config.loadSlides(this); 
    } 

К сожалению , в отладке я вижу, что добавление команды не сработало. Это можно увидеть, если установить точку останова в строке «config.loadSlides (this)». Однако команда (addCommand) обрабатывается. Любая идея, почему это происходит? Может быть, я ноб, и я не вижу очевидного :)

+0

Прошло более 5 лет, так как я в последний раз использовал Cairngorm (это Кэрнгорм 2 верно?) ... Но, чтобы получить класс команды, чтобы запустить его 'выполнить()' метод, вы должны отправить вам посылку связанное событие где-то. Вы это делаете? –

+0

Хм, не уверен в версии рамки .. Я думал, что cairngorm делает это автоматически. И в каком классе это должно быть сделано? – Creativcheck

+0

Существует большая разница между Cairngorm 2 (реальная структура MVC) и Cairngorm 3 (более набор рекомендаций для использования различных, более современных, MVC-фреймворков). Тот факт, что вы называете «фронт-контроллер», звучит как старый Cairngorm 2. Если я правильно помню, в Cairngorm 2 вам пришлось отправлять события (например, «SliderEvent.Build») на «автобус событий cairngorm» (событие AKA Cairngorm Диспетчер или что-то в этом роде). Google ответит на все это за вас ... С тех пор я слишком долго это использовал. –

ответ

0

Вместо добавления/отображения команд в конструкторе AppController. Объявите его в функции initialize(). Пример приведен ниже для вашей справки.

public class AppController extends FrontController 
    { 
     public function AppController() 
     { 
      super(); 
     } 

     public function initialize():void 
     { 
      this.addCommand(SliderEvent.BUILD, SliderBuildCommand); 
      this.addCommand(SliderEvent.TRANSITION, SliderTransitionCommand); 
     } 
    } 
+0

Тогда еще один сюрприз. инициализация initialize() не происходит ... Также посмотрите на точку останова. Может быть, в некоторых настройках проекта? – Creativcheck

+0

@ user2717843: Я предполагаю, что 'AppController' распространяется на' FrontController'. Если он все еще не работает, попробуйте добавить страницу «AppController» на ** Application **. – Asad

+0

так что я написал в начале выпуска: «У меня есть основной класс, в котором у меня есть тег <управление: AppController ID =» AppController»/> " – Creativcheck

 Смежные вопросы

  • Нет связанных вопросов^_^