![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2016
Сообщений: 18
|
Всем привет, Помогите пожалуйста разобраться, как правильно работать с классами. В классе 2, я создаю игровую энергию, потом в добавляю ее в 1 первый класс. Все работает и отображается. Дальше я создаю функцию energyClik, которая по идеи должна при клике умешать переменную numEnergy на один и она уменьшает, НО она связана с динамическим текстом energyText, значит текст тоже должен уменьшатся с 5 до 4 и т.д. но он не уменьшается. В этом вся проблема.
// Класс 1 package com.content.menu { import flash.display.*; import flash.filters.*; import flash.events.*; import flash.media.*; import flash.utils.*; import flash.text.*; import com.content.points.*; public class MenuGompany extends GameScreen { public static var _this:*; private var energy:EnergyGame; public function MenuGompany() { _this = this; energy = new EnergyGame(); //_this.energyText.text = numEnergy.toString(); _this.addChild(energy); } } } // Класс 2 package com.content.points { import flash.display.*; import flash.filters.*; import flash.events.*; import flash.media.*; import flash.utils.*; import flash.text.*; import com.content.menu.*; public class EnergyGame extends IconEnergy { private var _this:*; public static var numEnergy: Number = 5; public function EnergyGame() { _this = this; _this.x = 300; _this.y = 3; _this.energyText.text = numEnergy.toString(); // вот тут проблема _this.addEventListener(Event.ADDED_TO_STAGE, addThis); _this.addEventListener(MouseEvent.CLICK, energyClik); } private function addThis(e: Event): void { _this.removeEventListener(Event.ADDED_TO_STAGE, addThis); } private function energyClik(e: MouseEvent): void { trace('click', numEnergy); numEnergy--; } } } |
|
|||||
|
Там нет никакой проблемы, всё работает именно так, как написано. Значение _this.energyText.text присваивается только в конструкторе. Если хочешь, чтобы переменная всегда была туда записана, то вешай либо сеттер/геттер на неё, либо ENTER_FRAME на объект.
__________________
Я заклинаю вас действовать иначе. |
|
|||||
|
Регистрация: Apr 2016
Сообщений: 18
|
Спасибо, через ENTER_FRAME заработало)
|
|
|||||
|
не мог пройти мимо, в чем смысл private var _this:*; и кто вам подсказал такой подход?
__________________
местонахождение |
|
|||||
|
Регистрация: Apr 2016
Сообщений: 18
|
Ну с помощью этой переменной, я управляю объектом на сцене.
|
|
|||||
|
Уберите везде this и _this, и вы получите все тоже самое.
![]() |
|
|||||
|
Регистрация: Apr 2016
Сообщений: 18
|
Ах, точно работает. Не знал, что так можно. Спасибо)
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
А зачем здесь какой-то ентерфрейм? Переменная изменяется в одном конкретном месте, достаточно в этом же месте обновлять текст и всё.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Apr 2016
Сообщений: 18
|
Ок. А как мне допустим в классе 3 уменьшать numEnergy на 1 при каком нибудь действии? Логично предположить, что нужна простая проверка if
private function goGame(e: MouseEvent) { //...code if(numEnergy > 0) { gameSetup(); numEnergy--; trace("Количество энергии -",numEnergy); } else { noGame(); } } private function noGame() { trace("Не хватает энергии для начала игры"); } Flash ругается на несуществующие свойство numEnergy...
__________________
GameDev |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:21. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|