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

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

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

Регистрация: Jan 2007
Сообщений: 34
Отправить сообщение для Coffein с помощью ICQ
По умолчанию Как передать у казатель на объект?

Всем здрасти! Помогите пожулусто решить следующий вопрос:
Я описал класс для некоторого обекта танк:

Код:
class Tank extends MovieClip {
	var Tw:Tower;
	var type_t:String;
	function Tank(parent:Object, param_id:String, param_type:String, param_x:Number, param_y:Number, param_rotation:Number, param_towerRotation:Number){
		trace(parent);
		parent.attachMovie("T-34", param_id, 1);
		parent[param_id]._x			= param_x;
		parent[param_id]._y			= param_y;
		parent[param_id]._rotation		= param_rotation;
		this.type_t		= param_type;
		this.Tw			= new Tower(?, param_towerRotation);
		trace('Tank "'+this.type_t+'" created');
	}
}
Конструктор этогокласса создает платформу. Теперь я хочу приаттачить к этой платформе башню. Для этого я в кострукторе описываю переменную данного типа(тоесть я отдельно описал класс "башня"):
Код:
var Tw:Tower;
     ...
После этого должен вызвать конструктор с парамметром указателя на платформу. (Это для того чтобы аттачить не к _root'у, а именно к платформе).
Код:
this.Tw			= new Tower(?, param_towerRotation);
Подскажите как передать указатель, или возможно ли такое?


Последний раз редактировалось Coffein; 22.04.2007 в 19:23.
Старый 22.04.2007, 19:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Что есть Tower?

Старый 22.04.2007, 19:24
Coffein вне форума Посмотреть профиль Отправить личное сообщение для Coffein Найти все сообщения от Coffein
  № 3  
Ответить с цитированием
Coffein

Регистрация: Jan 2007
Сообщений: 34
Отправить сообщение для Coffein с помощью ICQ
Это класс:
Код:
class Tower extends MovieClip {
	
	function Tower(parent1:Object, param_rotation:Number){
		trace(parent1);
		parent1.attachMovie("t34_tw", "mytower", 1);
		//this._rotation = param_rotation;
		//trace('rotation: '+this._rotation);
		trace('Tower created');
	}
}

Старый 22.04.2007, 19:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Мувиклипы не создаются через конструктор. В linkage у клипа в библиотеке должен быть указан соответствующий класс для клипа, в данном случае Tower.

Старый 22.04.2007, 19:31
Coffein вне форума Посмотреть профиль Отправить личное сообщение для Coffein Найти все сообщения от Coffein
  № 5  
Ответить с цитированием
Coffein

Регистрация: Jan 2007
Сообщений: 34
Отправить сообщение для Coffein с помощью ICQ
Все так и указано, но он не аттачится, потомучто как я понял он не понимает куда аттачить. Как быть?

Старый 22.04.2007, 19:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, неправильный подход вообще и в целом.
Класс Tank наследуется от MovieClip => в библиотеке должен быть клип платформы танка, с описанным linkage id и классом Tank. Далее, там где требуется создать танк должны быть следующие строки:

Код:
var tank:Tank = Tank(this.attachMovie('TankLinkage','tank_mc',0,{_x:10,_y:20,_rotation:30}));
Аналогично должно быть описано в самом классе Tank для Tower.
Т.е. примерно так:

Класс Tank:
Код:
class Tank extends MovieClip {
    private var tower:Tower;
    private function Tank() {
        this.tower = Tower(this.attachMovie('TowerLinkage','tower',0,{_x:5,_y:10,_rotation:40}));
    }
}
Класс Tower в принципе ничего не должен знать о своих родителях, т.е. о классе Tank.

Старый 22.04.2007, 20:02
Coffein вне форума Посмотреть профиль Отправить личное сообщение для Coffein Найти все сообщения от Coffein
  № 7  
Ответить с цитированием
Coffein

Регистрация: Jan 2007
Сообщений: 34
Отправить сообщение для Coffein с помощью ICQ
__etc, в моем коде:
Код:
this.Tw			= new Tower(?, param_towerRotation);
надо было передать парамметр parent[param_id]. Теперь все заработало.

Но __etc, поясни ламеру, почему мой подход не правельный?

Старый 22.04.2007, 20:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Либо твои классы не должны наследоваться от MovieClip (они не являются клипами), либо должны быть описаны, как я написал.

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

Регистрация: Jan 2007
Сообщений: 34
Отправить сообщение для Coffein с помощью ICQ
Понятно, спасибо за помощь!

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

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

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


 


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


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