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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.09.2016, 16:42
Anbu51Ru вне форума Посмотреть профиль Отправить личное сообщение для Anbu51Ru Найти все сообщения от Anbu51Ru
  № 1  
Ответить с цитированием
Anbu51Ru
 
Аватар для Anbu51Ru

Регистрация: Apr 2016
Сообщений: 18
Question Работа с классами

Всем привет, Помогите пожалуйста разобраться, как правильно работать с классами. В классе 2, я создаю игровую энергию, потом в добавляю ее в 1 первый класс. Все работает и отображается. Дальше я создаю функцию energyClik, которая по идеи должна при клике умешать переменную numEnergy на один и она уменьшает, НО она связана с динамическим текстом energyText, значит текст тоже должен уменьшатся с 5 до 4 и т.д. но он не уменьшается. В этом вся проблема.
Код AS3:
// Класс 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);			
 
 
		}
 
 
	}
 
}
Код AS3:
// Класс 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--;
		}
 
 
	}
 
}

Старый 12.09.2016, 17:44
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 2  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 567
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Там нет никакой проблемы, всё работает именно так, как написано. Значение _this.energyText.text присваивается только в конструкторе. Если хочешь, чтобы переменная всегда была туда записана, то вешай либо сеттер/геттер на неё, либо ENTER_FRAME на объект.
__________________
Я заклинаю вас действовать иначе.

Старый 12.09.2016, 17:59
Anbu51Ru вне форума Посмотреть профиль Отправить личное сообщение для Anbu51Ru Найти все сообщения от Anbu51Ru
  № 3  
Ответить с цитированием
Anbu51Ru
 
Аватар для Anbu51Ru

Регистрация: Apr 2016
Сообщений: 18
Спасибо, через ENTER_FRAME заработало)

Старый 12.09.2016, 21:09
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 4  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
не мог пройти мимо, в чем смысл private var _this:*; и кто вам подсказал такой подход?
__________________
местонахождение

Старый 12.09.2016, 22:53
Anbu51Ru вне форума Посмотреть профиль Отправить личное сообщение для Anbu51Ru Найти все сообщения от Anbu51Ru
  № 5  
Ответить с цитированием
Anbu51Ru
 
Аватар для Anbu51Ru

Регистрация: Apr 2016
Сообщений: 18
Ну с помощью этой переменной, я управляю объектом на сцене.

Старый 12.09.2016, 23:32
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 6  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Цитата:
Сообщение от Anbu51Ru Посмотреть сообщение
Ну с помощью этой переменной, я управляю объектом на сцене.
Уберите везде this и _this, и вы получите все тоже самое.

Старый 12.09.2016, 23:48
Anbu51Ru вне форума Посмотреть профиль Отправить личное сообщение для Anbu51Ru Найти все сообщения от Anbu51Ru
  № 7  
Ответить с цитированием
Anbu51Ru
 
Аватар для Anbu51Ru

Регистрация: Apr 2016
Сообщений: 18
Ах, точно работает. Не знал, что так можно. Спасибо)

Старый 13.09.2016, 00:29
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А зачем здесь какой-то ентерфрейм? Переменная изменяется в одном конкретном месте, достаточно в этом же месте обновлять текст и всё.
Код AS3:
		private function energyClik(e: MouseEvent): void
		{
		     trace('click', numEnergy);
			 numEnergy--;
			 energyText.text = numEnergy.toString();
		}
__________________
Reality.getBounds(this);

Старый 13.09.2016, 12:03
Anbu51Ru вне форума Посмотреть профиль Отправить личное сообщение для Anbu51Ru Найти все сообщения от Anbu51Ru
  № 9  
Ответить с цитированием
Anbu51Ru
 
Аватар для Anbu51Ru

Регистрация: Apr 2016
Сообщений: 18
Ок. А как мне допустим в классе 3 уменьшать numEnergy на 1 при каком нибудь действии? Логично предположить, что нужна простая проверка if
Код AS3:
private function goGame(e: MouseEvent)
		{
			//...code
 
			if(numEnergy > 0)
			{
				gameSetup();
				numEnergy--;
				trace("Количество энергии -",numEnergy);
			} else
			  {
				  noGame();
			  }
 
		}
		private function noGame()
		{
             trace("Не хватает энергии для начала игры");
		}

Flash ругается на несуществующие свойство numEnergy...
__________________
GameDev

Старый 13.09.2016, 13:17
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
у тебя оно статик EnergyGame.numEnergy
__________________
Марк Tween

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

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

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


 


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


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