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

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

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

Регистрация: Mar 2015
Сообщений: 64
По умолчанию обращение к переменной другого класса

Доброго времени суток!!!

Из главного класса обращаюсь к переменной определённой в другом классе (имя переменной pozition1OfMatch);
Код AS3:
/*расположим город*/
	var sityMatch:SityMatchClass = new SityMatchClass();
	sityMatch.x = ArrayOfCell[pozition1OfMatch].x;
	sityMatch.y = ArrayOfCell[pozition1OfMatch].y;
	main.addChild(sityMatch);
Вот класс в котором определенна эта переменная:
Код AS3:
package cellAndRoadPG.sityPG {
 
	public class SityMatchClass extends SityMatch {
 
		private var sityMatch = this;
 
		public var pozition1OfMatch:Number ;//номер ячейки массива в котором расположена клетка местности
		public var pozition2OfMatch:Number;//номер ячейки массива в котором расположена клетка местности
		public function SityMatchClass (){
			var pozition1OfMatch = Math.floor(Math.random() * 110 - 1);
			var pozition2OfMatch = Math.floor(Math.random() * 110 - 1);
			if(pozition1OfMatch < 0){
				pozition1OfMatch = 0;
			}
			if(pozition2OfMatch < 0){
				pozition2OfMatch = 0;
			}
		}
	}
}
Выдает ошибку 1120: Access of undefined property pozition1OfMatch.

P.S. класс SityMatchClass импортирован в главный класс. Проверял, с импортом все нормально.

Пожалуйста, кто может подскажите в чем ошибка.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Код AS3:
sityMatch.x = ArrayOfCell[pozition1OfMatch].x;
	sityMatch.y = ArrayOfCell[pozition1OfMatch].y;
замените на
Код AS3:
sityMatch.x = ArrayOfCell[sityMatch.pozition1OfMatch].x;
	sityMatch.y = ArrayOfCell[sityMatch.pozition1OfMatch].y;
Добавлено через 5 минут
да и кстати
Код AS3:
public function SityMatchClass (){
			var pozition1OfMatch = Math.floor(Math.random() * 110 - 1);
			var pozition2OfMatch = Math.floor(Math.random() * 110 - 1);
			if(pozition1OfMatch < 0){
				pozition1OfMatch = 0;
			}
			if(pozition2OfMatch < 0){
				pozition2OfMatch = 0;
			}
		}
следует убрать var так как данная инструкция создает локальные переменные, а не отдает ссылки на публичные pozition1OfMatch и pozition2OfMatch

Код AS3:
package cellAndRoadPG.sityPG {
 
	public class SityMatchClass extends SityMatch {
 
		private var sityMatch = this;
 
		public var pozition1OfMatch:Number ;//номер ячейки массива в котором расположена клетка местности
		public var pozition2OfMatch:Number;//номер ячейки массива в котором расположена клетка местности
		public function SityMatchClass (){
			pozition1OfMatch = Math.floor(Math.random() * 110 - 1);
			pozition2OfMatch = Math.floor(Math.random() * 110 - 1);
			if(pozition1OfMatch < 0){
				pozition1OfMatch = 0;
			}
			if(pozition2OfMatch < 0){
				pozition2OfMatch = 0;
			}
		}
	}
}
__________________
return this...

Старый 06.07.2015, 20:34
бакуард вне форума Посмотреть профиль Отправить личное сообщение для бакуард Найти все сообщения от бакуард
  № 3  
Ответить с цитированием
бакуард

Регистрация: Mar 2015
Сообщений: 64
Спасибо за быстрый ответ, но ваши советы не дали результатов. Может быть проблема ещё в чем-нибудь.

P.S. ещё раз проверил импорт классов, все нормально.

Старый 06.07.2015, 22:50
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 4  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
Выложите то, что написали после применения советов
а вообще довольно удобно get/set использовать

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от бакуард Посмотреть сообщение
Код AS3:
sityMatch.x = ArrayOfCell[pozition1OfMatch].x;
Я не совсем понимаю, как переменную можно передать в массив по ссылке, ведь Number это не ссылочный тип. И откуда там взялось ArrayOfCell[pozition1OfMatch].x? Что конкретно храниться в массиве ArrayOfCell?


Последний раз редактировалось samana; 06.07.2015 в 23:34.
Старый 07.07.2015, 11:03
бакуард вне форума Посмотреть профиль Отправить личное сообщение для бакуард Найти все сообщения от бакуард
  № 6  
Ответить с цитированием
бакуард

Регистрация: Mar 2015
Сообщений: 64
Спасибо за помощь Samana!
В массиве ArrayOfCell хранятся объекты (клетки ландшафта из которых состоит клеточная карта).
Я подумал что будет удобней при создании каждой клетки сразу добавлять их в массив, чтобы потом легко было обращаться к каждой из них (P.S. массив одномерный). А переменная pozition1OfMatch - задумывалась,как случайно генерируемое число от 0 до 99, чтобы вот в такой конструкции:
Код AS3:
sityMatch.x = ArrayOfCell[pozition1OfMatch].x;
обращаться к случайной клетке(ссылка на которую
хранится в массиве) и присваивать будущему объекту sityMatch координаты этой клетки.
Наверное я сильно запутался. Извините если пишу откровенную ерунду.

Добавлено через 37 минут
Цитата:
Я не совсем понимаю, как переменную можно передать в массив по ссылке, ведь Number это не ссылочный тип.
На этот счет я нашел в документации от adobe следующее(если я правильно понял вас):
Цитата:
Также в квадратных скобках можно использовать переменную вместо конкретного значения. (Переменная
должна содержать неотрицательное целое число, например беззнаковое целое число, положительное целое
число или экземпляр Number, представленный положительным целым числом.)

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Из этого Вы должны были сделать вывод, что переменным pozition1OfMatch и pozition2OfMatch нужно назначить тип uint а не Number. Хоть это и не критично, но всё же неправильно, индекс в массиве не может иметь дробную часть.
__________________
Reality.getBounds(this);

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

Регистрация: Mar 2015
Сообщений: 64
Спасибо Wolsh!
В действительности я был не внимателен. Сейчас же попробую предложенный вами вариант.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от бакуард Посмотреть сообщение
Цитата:
Также в квадратных скобках можно использовать переменную вместо конкретного значения.
Да, конечно это правда. Но когда вы передается в квадратные скобки переменную, то в квадратные скобки передаётся просто значение этой переменной и связи с ней больше не существует.
Но как я вижу, это не касается вашего кода. Я думал, что вы просто заносите в массив числовую переменную, пытаясь ещё вытянуть из неё "x" и "y")
А разве вариант, предложенный AlexCooper, не сработал?

Старый 08.07.2015, 08:18
бакуард вне форума Посмотреть профиль Отправить личное сообщение для бакуард Найти все сообщения от бакуард
  № 10  
Ответить с цитированием
бакуард

Регистрация: Mar 2015
Сообщений: 64
Извиняюсь Samana, не мог сразу ответить.
Нет, вариант предложенный AlexCooper не помог.

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

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

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


 


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


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