Показать сообщение отдельно
Старый 02.05.2012, 21:00
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
P.s. Может быть я делаю не правильно и вы меня направите на путь истинный?)
Угу. Обработка подобных событий от view вообще не должна зависит. И в вид вообще не стоит никак привязывать данные об объекте. Пусть он создается из самого объекта и дальше с ним работает. Ну или как у вас, но оставить только сеттеры, нужные именно во вью (только цены, но не buttonId). Привязка событий делается так:
Код AS3:
public final class SellItemController {
  private var item : ShopItem;
 
  // добавить еще параметров по вкусу.
  public function SellItemController(item : ShopItem) {
    this.item = item;
  }
 
  internal function onSell1(e : MouseEvent) : void {
   ...
  }
 
  internal function onSell2(e : MouseEvent) : void {
   ...
  }
}
//---- В коде
const itemController : SellItemController = new SeillItemController(item);
_itemObjForm.btn1.addEventListener(MouseEvent.CLICK, itemController.onSell1);
_itemObjForm.btn2.addEventListener(MouseEvent.CLICK, itemController.onSell2);
}
Когда надоест писать подобные контроллеры, можно будет библиотечную функцию делать и писать примерно так:
Код AS3:
_itemObjForm.btn1.addEventListener(MouseEvent.CLICK, EventUtils.createEventHandler(sell1, [item]));
_itemObjForm.btn2.addEventListener(MouseEvent.CLICK, EventUtils.createEventHandler(sell1, [item])));
 
Или даже 
EventUtils.onEvent(_itemObjForm.btn1, MouseEvent.CLICK, sell1, [item]);
EventUtils.onEvent(_itemObjForm.btn2, MouseEvent.CLICK, sell2, [item])));