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

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

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

Регистрация: Jan 2012
Сообщений: 10
По умолчанию Как обратиться к экземпляру класса из другого класса?

Здравствуйте! Есть 2 файла - класса .as. И 1 скрепляющий .fla.
Собственно, вопрос: как прописать в коде 1 из классов обращение к экземпляру второго класса (данный экземпляр находится на stage файла .fla)?

Код AS3:
var mDx = stage.hero.x - this.x;
var mDy = stage.hero.y - this.y;
Название "hero" он не понимает (оно и понятно ).
Раньше вместо hero вычислял положение мыши (ведь, по сути, тоже объект на сцене), у неё есть зарезервированное имя, а вот к другому объекту как...

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
если у вас персонаж действительно на сцену добавлен, то так
Код AS3:
stage.getChildByName("hero")
__________________
low +

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

Регистрация: Jan 2012
Сообщений: 10
Сделал так, как вы предложили:
Код AS3:
var mDx = stage.getChildByName("hero").x - this.x;
var mDy = stage.getChildByName("hero").y - this.y;
Выдает ошибку (не видит этот объект...):
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at characters::turret/movement()
at characters/game()
Идентичность названия сверил.

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

Регистрация: Nov 2010
Сообщений: 150
Значит его там и нет. Вообще он врятли лежит на stage. getChildByName вызывать нужно не у stage, а у того класса куда добавляются "2 файла - класса .as" (скорее всего это и есть класс 1).

Старый 12.01.2012, 21:44
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Если класс 1 является документ классом, то да, объект добавляется в экземпляр этого класса, а не на сцену

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

Регистрация: Jan 2012
Сообщений: 10
Stitch512, так в том-то и дело, что я добавляю два классовых файла не к третьему классу, а на сцену файла .fla.
Следовательно, не получается создать код типа:
Код AS3:
public static var hero:robot = new TRobot();
addChild(hero);
Ведь я пишу это не в классе

goodguy, не совсем понял, что такое документ-класс.

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Класс 1
Код AS3:
public class Class1 {
   public var class2Obj:Class2;
   public function Class1(obj:Class2){
      class2Obj = obj.
      //теперь через переменную class2Obj мы можем обращаться к экземпляру второго класса
   }
}
Класс 2
Код AS3:
public class Class2 {
   public function Class2(){
 
   }
}
fla файл:
Код AS3:
var class2Ins:Class2 = new Class2();
var class1Ins:Class1 = new Class1(class2Ins);
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 12.01.2012, 23:42
Stalin45 вне форума Посмотреть профиль Отправить личное сообщение для Stalin45 Найти все сообщения от Stalin45
  № 8  
Ответить с цитированием
Stalin45

Регистрация: Jan 2012
Сообщений: 10
HardCoder, классный способ! Мне все ясно, но у меня уже голова идет кругом...
В fla записал следующие строки:
Код AS3:
 var hero:robot = new robot();
 var turret1:turret = new turret(hero);
В результате выдает ошибку:
1136: Incorrect number of arguments. Expected 0. Почему 0 ожидалось, если в конструкторе прописал 1 аргумент???

Код AS3:
	public class turret extends Sprite
	{
		public var target_:robot;
		internal var armour, health, energy, rotationSpeed:uint;
		internal var energyRegen:Number;
		public function turret(obj:robot) 
		{
			target_ = obj;
			armour = 500;
			health = 250;
			energy = 40;
			energyRegen = 0,1;
			rotationSpeed = 2;
		}
И странно то, что если в fla попытаться создать экземпляр без аргументов, он все же пишет:
1203: No default constructor found in base class characters:turret.


Последний раз редактировалось Stalin45; 12.01.2012 в 23:50.
Старый 12.01.2012, 23:50
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 9  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
А что такое characters?
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 12.01.2012, 23:55
Stalin45 вне форума Посмотреть профиль Отправить личное сообщение для Stalin45 Найти все сообщения от Stalin45
  № 10  
Ответить с цитированием
Stalin45

Регистрация: Jan 2012
Сообщений: 10
2 файла as находятся в папке characters и, соответственно, в таком пакете.
Fla лежит в 1 директории с папкой characters.

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

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

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


 


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


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