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

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

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

Регистрация: May 2008
Сообщений: 476
1.Скажите this.cityProto имеет точку регистрации в центре мува или левый верхний угол (или иное)?
2.Мне необходимо посмотреть текст класса CSity поскольку именно он отвечает за формирование самих надписей


Последний раз редактировалось Alex_beginner; 26.05.2008 в 19:16.
Старый 27.05.2008, 02:26
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 12  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
А такой вариант чем плох - брать _x и _y объекта (в зависимости от того где надо отступо по высоте или ширине, прибавлять _width или _height объекта + определенный отступ, тогда можно выдержать четкое расстояние между всеми

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

Регистрация: May 2008
Сообщений: 476
DJ Baton!Curizor!
Все бы хорошо! Вот только ширина то, текущего клипа, а не предыдущего!

Поэтому, давайте подробно рассмотрим вот этот кусочек кода:

Код:
var resultMC = this.cityProto.duplicateMovieClip("city_" + index,  this.getNextHighestDepth());	

	resultMC._y = 0;
	resultMC._x = index * resultMC._width;	
	resultMC.__proto__ = new CSity();
	resultMC.init(caption, href, this);
Что происходит в этих строчках!

1. Создается дубликат некоего клипа this.cityProto;
2. Ширина вновь созданного дубликата имеет то же значение, что и дублируемого клипа;
3. Координату левого-верхнего угла клипа-дубликата мы определяем как произведение счетчика цикла (см. ниже) и ширины текущего созданного дубликата;
4. Создаем потомок класса CSity;
5. Вызываем метод init() объекта класса-потомка от CSity.

Проанализируем п.2 и п.3, совместно.
Если, ширина всех создаваемых дубликатов одинакова, строчка:
Код:
resultMC._x = index * resultMC._width;
безусловно корректна. Поскольку, ее можно представить как сложение i равных значений. Ситуация в корне меняется, если эти расстояния неравны между собой. Тогда указанная выше формула для расчета положения клипа-названия некорректна, и будет давать искажения положения клипа-названия на родительской временной шкале.
Надейюсь объяснил понятно. Если не понятно, спрашивайте, объясню на примерах.

Теперь, как решить данную проблему.

Необходиму создать некоторую буфферную глобальную переменную в которую на текщей итерации - i, Вы будете записывать сумму ширин всех созданных на предыдущих итерациях дубликатов (клипов-названий). Тогда, позиция левого-верхнего угла текущего клипа-названия-дубликата будет определяться суммой ширин предыдущих. А после установки текущей позциии клипа, прибавив к ней ширину текущего клипа, мы получим позицию для клипа на следующей итерации.

В принципе, можно обойтись и без создания дополнительной глобальной переменной, а рассчитывать положение текущего клипа, как сумму двух значении - позиции _x предыдущего (на итерации i-1) созданного клипа-дубликата и его же ширины.

Это первый возможный вариант. Если он не поможет, то необходимо посмотреть текст реализации класса CSity, потому как именно он отвечает за формирование клипа-названия. Тест класса CSity здесь непредставлен.


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

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

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


 


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


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