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

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

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

Регистрация: Dec 2013
Сообщений: 35
По умолчанию Вопрос про get и set

Теперь когда более-менее ясно про организацию классов, хотелось бы понять как между ними делать взаимодействие.
Я вроде правильно написал getter и setter?
Код AS3:
public class MainHiro extends GG
	{
		private var fnX:int= 0;
		private var fnY:int= 0;
 
		public function get get_set_gg_x():Number
		{
			return fnX;
		}
		public function get get_set_gg_y():Number
		{
			return fnY;
		}
		public function set get_set_gg_x(xy_mouse:Number)
		{
			fnX =xy_mouse;
		}
		public function set get_set_gg_y(xy_mouse:Number)
		{
			fnY =xy_mouse;
		}
 
 
		public function MainHiro()
		{
			addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
		}
//
private function fnGetXY(event:MouseEvent):void
		{
		        get_set_gg_x=stage.mouseX;
			get_set_gg_y=stage.mouseY;
		}
В главном классе я не могу извлечь данные из него.
Код AS3:
public function Main()
		{
			this.addEventListener(Event.ENTER_FRAME,seting);
			var gg:MainHiro = new MainHiro();
			//var bg_move:MoveBg= new MoveBg();
			gg.x = 200;
			gg.y = 200;
			addChild(gg);
			fn_bg_move();
			trace(gg.get_set_gg_x);// Выводит 0
		}
Как это сделать?

Старый 14.03.2015, 02:07
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
В момент
Код AS3:
trace(gg.get_set_gg_x);
хендлер MainHiro#fnGetXY еще не выполнился, поэтому fnX и fnY имеют заданные дефолтные значения
Код AS3:
private var fnX:int= 0;
private var fnY:int= 0;
__________________
тут я

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
DenDobrii, вы движетесь в верном направлении, но пропустили важную вещь - конвенции. Я ж вам уже писал, что имена свойств и методов(если вы выкладываете код, по крайней мере, хотя и для себя полезно не быдлокодить) должны полностью отражать суть и быть ясными и понятными даже людям далёким от программирования.

Например, если вы делаете игру про инопланетян, то вам нужен класс Alien, Spaceship, Space.
В классе Alien приватные поля _health:int, _readyState:int, _dead:Boolean, и методы
getHealth(), isDead(), getReadyState() - это полоса готовности пришельца, допустим, к стрельбе или удару, подобно кончающимся силам живого человека, hit(), takeDamage(), - эти для ударов других пришельцев нашим, тоесть для ударов других экземпляров или наследников класса Alien.
__________________
There is no thing in this world that is not simple.

Старый 14.03.2015, 11:47
DenDobriy вне форума Посмотреть профиль Отправить личное сообщение для DenDobriy Найти все сообщения от DenDobriy
  № 4  
Ответить с цитированием
DenDobriy

Регистрация: Dec 2013
Сообщений: 35
ZackMercury, спасибо за конвенции. Я их не пропустил

Старый 17.03.2015, 21:18
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
getHealth(), getReadyState() ... takeDamage()
Если это не акцессоры, то я сильно против таких методов, которые суть акцессоры. Если это акцессоры, то очень фигово называются.

Негативное мнение вызвано необходимостью отладки и поддержания проекта. В хороших IDE корректно покажется текущее значение геттера с произвольной цепочкой вложенности просто при наведении курсора мыши на имя вызываемого геттера в редакторе.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Можно и геттерами, можно и простыми методами. Кажется, в Муке было что-то нехорошее сказано в пользу геттеров и сеттеров, вот я и использую методы.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Если это акцессоры, то очень фигово называются.
Чем фигово? Тем, что написаны не по стандартам as3?
В ас3 геттеры / сеттеры не идеальны. Они хороши, если надо в сеттере передать всего один параметр. А если больше? Не всегда удобно

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
caseyryan, в аксессоры вряд ли придётся передавать более, чем 1 параметр. Для этого есть обычные методы.
В целом, я согласен с dimarik.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Можно например сделать setPosition(x:int, y:int), или setSize(width:int, height:int). Но сеттеры и геттеры должны писаться по единому стандарту. Если есть getHealth(), то сеттер должен быть setHealth(value:int)
В джаве это стандарт. АС3 конечно не джава, но это говорит о том, что стандарт все-таки вполне нормальный и общепринятый. Ничего плохого в этом нет. Плохо - это когда название метода вообще не информативно
Цитата:
Для этого есть обычные методы.
Это и есть обычные методы

Старый 18.03.2015, 20:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
По вашему getPosition должен возвращать либо экземпляр объекта, либо объект класса Point, а getSize - объект класса Rectangle, так штоли?

Как сделать setSize и getSize с двумя параметрами так, чтобы не было лишних действий/затрат памяти?
Всё-таки создание экземпляра Point довольно затратная операция, а получать размеры скорее всего придётся в каждом кадре.

Вот именно, два параметра - значит нет getТоЖеСамое, либо он затратный.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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