![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Адрес: Санкт-Петербург
Сообщений: 12
|
Пытался искать в поиске, но не знаю, как правильно задать вопрос.
Во flash ide нарисовал форму объекта, место для картинки, описание, и 2 кнопки покупки за разные виды средств. передал через swc в свой проэкт. расширил данный класс (назвал ShopItemType) добавил переменные типа Стоимость 1, Стоимость 2, через геттер сеттер. Упрощённый код: package { import flash.events.MouseEvent; public class ShopItemView extends mc_itemObj { private var _price1:int = 0; private var _price2:int = 0; private var _btnId:int; public function ShopItemView() { } public function get price1():int { return _price1; } public function set price1(value:int):void { _price1 = value as int; text_price1.text = "" + value as String; } public function get price2():int { return _price2; } public function set price2(value:int):void { _price2 = value as int; text_price2.text = "" + value as String; } public function get btnId():int { return _btnId; } public function set btnId(value:int):void { _btnId = value; } } } Упрощённый код: private function itemsCellLoader ():void { for (var itemId:int = 1; itemId <= 9; itemId++) { var itemObj:Object = _itemList[itemId]; //данные из json //тут вырезал размещение по X,Y дабы не засорять код _itemObjForm = new ShopItemView(); _itemObjForm.price1 = _itemList.price1; _itemObjForm.price2 = _itemList.price2; _itemObjForm.btnId = itemId; //вариант 1 _itemObjForm.addEventListener(MouseEvent.CLICK, onClick_btn1); //вариант 2 _itemObjForm.btn1.addEventListener(MouseEvent.CLICK, onClick_btn1); _itemObjForm.btn2.addEventListener(MouseEvent.CLICK, onClick_btn2); _shopPanel.addChild(_itemObjForm); } } Если же повесить EventListener как в Варианте 2 то currentTarget будет ссылаться на SimpleButton и не даст мне никаких данных об объекте-Родителе. Внимание, наконец-то, вопрос! как мне обратиться в Объекту, содержащему эту кнопку? чтобы получить значения переменных? P.s. Может быть я делаю не правильно и вы меня направите на путь истинный?) Может быть стоит передать только ID предмета и потом обрабатывать заново через json какой он стоимости? P.s.s. Извиняюсь за излишнюю подробность. P.s.s.s Учусь as3 Последний раз редактировалось KirillKobyzev; 02.05.2012 в 20:29. |
|
|||||
|
Регистрация: May 2012
Сообщений: 7
|
Что-то непонятно, нужно получить значения переменных _price1 и _price2?
И еще в коде используешь - а для того чтобы их напрямую присваивать они должны быть в пакете вместо pivate - public, вот так |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
Salador, По-моему, вы что-то невнятное написали.
По теме: вариант выбран не совсем удачный. Но рамках этого варианта НО! Вот то, что написал я - есть эталон безобразия. Дети ничего не должны знать о родителях. Лучше пересмотреть архитектуру
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
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); } _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]))); |
|
|||||
|
Регистрация: Apr 2012
Адрес: Санкт-Петербург
Сообщений: 12
|
carrotoff
Цитата:
carrotoff Цитата:
maxkar Цитата:
заигрался Но! для магазина я не делал отдельного контроллера, он у меня в MVC Интерфейса игры, так сказать, находится и всё происходящее описанное мною ранее было в Вьюхе интерфейса Не думаю я просто, что следует магазину отдельный контроллер делать мало функционала ( на первый взгляд, мне кажется) Может быть я и ошибаюсь, спасибо за ответы, буду думать) maxkar Цитата:
Последний раз редактировалось KirillKobyzev; 02.05.2012 в 21:16. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|