Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.02.2006, 20:38
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 1  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
По умолчанию Общение классов, передача параметров

Хотел узнать кто как справляется с такой проблемой (или задачей).

Есть, например, карточный стол (назовем CardTable class). Требуется раздать карты (Cards class). Когда карты будут розданы, требуется запустить определенную функцию в классе CardTable). Каждый раз эта функция разная (нарпимер после первой раздаче карт требуется запустить ф-цию cardHandFinished, а после воторой - endGame, и так далее). При чм не просто запустить функцию, а еще и передать ей параметр из класса Cards. Интересует кто как справляется с этой задачей.

Старый 18.02.2006, 20:41
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 2  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Паттерн Front Controller.

Делаешь ряд команд (действий, которые различаются). Сдаешь карты, по окончанию выбираешь, что вызывать, отдаешь в виде строки методу. Он вызывает соответствующую команду (создает ее экземпляр, отдает ей параметр, если надо, и запускает методом execute).

Старый 18.02.2006, 20:48
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 3  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
то есть вся логика, кого вызвать после сдачи, должа быть в классе Card ? Этого бы не очень хотелось.

А что за метод execute? В хелпе не нашел

Старый 18.02.2006, 20:51
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 4  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Пардон, вы бы почитали про паттерн-то. Логика должна быть в первичном контроллере. Команды -- это кусочки логики, они нужны для того, чтобы не держать в классе слишком много одновременно, если все равно все разом не понадобится.

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

Старый 18.02.2006, 20:54
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 5  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
пока что ничего не понял. Буду про паттерны читать. Если подскажете, где более наглядно это описано, был бы премного благодарен. Спасибо

Старый 18.02.2006, 20:55
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 6  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
скажу сразу, что до селе обходился так. CardTable запускал в классе Card функцию сдачи, и вместе с тем передавал ей в виде параметра функцию, которую надо запустить потом. Параметры при этом передавать особо не удавалось (.

Старый 19.02.2006, 15:09
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 7  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
поизучал Fron Controller

Как я понял его, касаемо флеш:
1. После раздачи карт вызывается всегда один и тот же метод (напр. frontController), которому передается параметр-состояние (напр. "cardHandFinished" или ""endGame", если брать мой пример).
2. Method frontController по парамету смотрит, что ему вызвать и вызывает.

Передать параметры от Card в CardTable таким образом можно так : frontController.call(CardTable, params)

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

Старый 19.02.2006, 15:16
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 8  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Начнем с того, что по логике управлять сдачей должен не стол, а некий контроллер.
Ну, допустим, у вас просто так нелепо назван этот самый контроллер. СДача -- это команда. Все остальные действия после сдачи -- тоже.

1. Сдаем. var lastLayout : Layout = this.layCardsOut();
2. Принимаем решение, что делать. checkCardsSet( lastLayout );
3. Внутри checkCardsSet решаем, что вызывать. Делаем экземпляр команды и и сполняем ее

Код:
var numberOfQueens : layour.getQueens().length;
switch( numberOfQueens )
{
   case 3:
        var command : StayCommand = new StayCommand();
        command.execute(); // здесь выполняются действия, гласящие, что новых карт мы не берем
        break;
  case 1:
        var getMore : getMoreCommand = new getMoreCommand();
        getMore.execute();
        break;
}
4. Все. Карта в подобном случае вообще должна быть тупым хранилищем данных о старшинстве и масти, то есть Value Object.

Старый 19.02.2006, 20:03
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 9  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
спасибо, весьма позновательно. Постяраюсь извлеч максимум из этого способа.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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