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

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

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

Регистрация: Sep 2009
Сообщений: 68
По умолчанию Как передать координаты, если мы обращаемся к классу, а не объекту

Есть такая задача.

Создал мувик - внутри 2 объекта: шейп и динамический текст-инпут (city_name).

нужно передавать мувику координаты x и y,а также название города, ну и скрипт должен положить этот мувик на stage.

Как я понимаю, нужно создать класс, слинковать мувик с классом, а потом на основной сцене уже вызвать инстанс класса и передать ему параметры?
Не могу понять как передать координаты, если мы обращаемся к классу, а не объекту


Код AS3:
city = new City();
city.x = 20;
city.y = 20;
city.city_label = 'Kiev';
addChild(city);
не матерится но и не работает.

И как сделать, чтобы я мог обратьсся изнутри класса к city_label и назначитть туда значение? Что-то типа

Код AS3:
city = new City();
city.setCityName('KIEV');
city.x = 20;
city.y = 20;
addChild(city);

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
а где вы собсно к классу обращаетесь?
для определения полей и методов класса юзают static
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Для начала, собирайте все программно.
Затем делаем класс, расширяем его от спрайта. Как я понял, это City будет. Внутри создаем шейп и что у вас там, затем создаем сеттеры/геттеры/просто методы (выбрать по вкусу). И в главном классе программы пишем то, что вы написали в своем посте, во второй его части.
Судя по всему, сейчас пойдут вопросы про классы и как писать не в кадрах...
__________________
тут я


Последний раз редактировалось КорДум; 25.10.2010 в 20:19.
Старый 26.10.2010, 12:46
Castro вне форума Посмотреть профиль Отправить личное сообщение для Castro Найти все сообщения от Castro
  № 4  
Ответить с цитированием
Castro

Регистрация: Sep 2009
Сообщений: 68
Смысл всего этого в том, что необходимо будет создать пару десятков мувиков на stage.

Где-то лажа, но не пойму где

Код AS3:
package{
	import flash.display.MovieClip;
	public class CityNew extends MovieClip{
		private var x_coord:Number;
		private var y_coord:Number;
 
		public function CityNew(){
			this.x_coord = 100;
			this.y_coord = 100;
			init();
		}
		 public function  set Xc(x_c:Number):void{
			this.x_coord = x_c;
		}
		public function get Xc():Number{
			return x_coord;
		}
		public function set Yc(y_c:Number):void{
			this.y_coord = y_c;
		}
		public function get Yc():Number{
			return y_coord;
		}
		public function init():void{
			this.x = x_coord;
			this.y = y_coord;
 
		} 
	}
}
ну и

Код AS3:
var city:CityNew = new CityNew();
addChild(city);
Вот так работает, но нельзя передать x и y, матерится

1061: Call to a possibly undefined method X_c through a reference with static type CityNew.

Тогда сделал Xc и Yc статическими, но теперь оно не может добраться до x_coord и y_coord.
Или же подразумевается что в при линковании, все методы класса должны быть статическими?

Где я неправ?


Последний раз редактировалось Castro; 26.10.2010 в 12:48.
Старый 26.10.2010, 13:06
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
for (var i:uint = 0; i < 10; i++) {
arrCity[i] = new City();
arrCity[i].x = newX;
arrCity[i].y = newY;
arrCity.textField.text = String(i);
}
Ну а в классе City публичное свойство textField, являющееся ссылкой на текстовое поле, созданное в классе City. Писал на зверьке, использовал каленку, так что без типизации и прочего.
__________________
тут я

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
если вы обращаетесь к полям класса, то статик, если к его экзепляру, то без статик

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

Код AS3:
var city:CityNew = new CityNew();
city.x= 900;
и зачем вам Xc и остальные свойства избыточные, если все это есть у класса предка?


Код AS3:
package{
	import flash.display.MovieClip;
	public class CityNew extends MovieClip{
 
		public function CityNew(){
                        super();
			super.x = 100;
			super.y = 100;
		}
	}
}
upd: пардон, увидел, что создаете, но не понятно как вы обращаетесь к свойствам
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью


Последний раз редактировалось cleptoman; 26.10.2010 в 13:14.
Старый 26.10.2010, 13:22
Castro вне форума Посмотреть профиль Отправить личное сообщение для Castro Найти все сообщения от Castro
  № 7  
Ответить с цитированием
Castro

Регистрация: Sep 2009
Сообщений: 68
Спасибо

Добавлено через 34 минуты
А из самого класса как обратится к текстовому полю в мувику (textFld)? Например мне нужно это для инициализации начальны данных, типа дефолтная стрка

Добавлено через 1 час 0 минут
Общая структура - файлу 1.fla назначен главный класс Main, в котором вызывается

Код AS3:
var city:City = new City();
 city.x = 80;
city.y = 100;  
city.txtFld.text = 'Tarara';
addChild(city);
ну и сам

Код AS3:
package{
	import flash.display.MovieClip;
	import flash.text.TextField;
	public class City extends MovieClip{
		//public var txtFld:String;
		public function City(){
			super();
			super.x = 300;
			super.y = 300;
		}
 
	}
}
В мувике есть текстовое поле txtFld, куда и надо передавать изнутри класса City дефолтные данные и с класса Main уже рабочие.
Валится на 1119: Access of possibly undefined property txtFld through a reference with static type City.

Оно рабочее вообще, если взять этот же класс и в отдельном fla файле вызвать тектовое поле, всё будет работать

Добавлено через 4 часа 19 минут
Вообще без вариантов?


Последний раз редактировалось Castro; 26.10.2010 в 13:42.
Старый 26.10.2010, 18:23
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
package{
	import flash.display.MovieClip;
	import flash.text.TextField;
 
	public class City extends MovieClip{
		public var txtFld:TextField;
		private var defaultString:String = "bla-bla";
 
		public function City(){
			this.x = 300;
			this.y = 300;
			this.addChild(txtFld);
			txtFld.text = defaultString;
		}
 
	}
}
__________________
тут я

Старый 26.10.2010, 19:11
Castro вне форума Посмотреть профиль Отправить личное сообщение для Castro Найти все сообщения от Castro
  № 9  
Ответить с цитированием
Castro

Регистрация: Sep 2009
Сообщений: 68
Был ответ
Цитата:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display:isplayObjectContainer/addChild()
at City()

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Потому что я не подписался на событие ADD_TO_STAGE, ибо я привел пример. Подпишитесь и будет вам счастье.
__________________
тут я


Последний раз редактировалось КорДум; 26.10.2010 в 19:39.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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