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

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

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

Регистрация: May 2010
Сообщений: 3
Question Как создать транспортир

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

В моей Flash-работе понадобился транспортир, вернее его шкала.
Так как проект еще в стадии разработки, то придется создавать его динамически.
По этой причине прошу вашего совета в этом вопросе.
Идея создать символ линии и вертеть его клонов на 180 градусов мне показалось безумной, а ничего другого в голову не приходит.
Я надеюсь, что вы сможете подсказать иное решение этой проблемы...

Заранее благодарен.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А почему придётся создавать его динамически? Почему не нарисовать его просто, и брать из библиотеки? И для чего он нужен будет? Им что-то измерять придётся, какие у него должны быть функции, его нужно двигать, вертеть? Можно уточнить вопрос?

Старый 25.05.2010, 02:02
Ышву вне форума Посмотреть профиль Отправить личное сообщение для Ышву Найти все сообщения от Ышву
  № 3  
Ответить с цитированием
Ышву

Регистрация: May 2010
Сообщений: 3
Вы правы, транспортир будет больше статическим (простите. дурная привычка называть динамическим всё, что создается программно).
Транспортир после создания я вертеть, двигать и прочие вещи с ним делать не буду.
Он будет лишь измерителем, причем видимо больше выполняющим фукцию Graphic объекта...
Но его размеры, величина линии и некоторые другие параметры мне мне нужно при необходимости изменить...
Измерять им нужно отклонения стрелки. В конце работы это будет часть прибора по типу амперметра. Функции с ним я не планирую.
Вопрос у меня стоит только в том, как создать шкалу из этих 180 линий(которые отличаются только поворотом на 1 градус) так, чтобы Flash не умер от потери оперативной памяти. Сколько знаю, он много объектов не любит...


Последний раз редактировалось Ышву; 25.05.2010 в 02:11.
Старый 25.05.2010, 03:26
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 4  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
createEmptyMovieClip, lineStyle, moveTo, lineTo спасет вас от нагромождения клипов с линией.

Старый 27.05.2010, 01:28
Ышву вне форума Посмотреть профиль Отправить личное сообщение для Ышву Найти все сообщения от Ышву
  № 5  
Ответить с цитированием
Ышву

Регистрация: May 2010
Сообщений: 3
Если честно, не совсем понимаю, как сделать, чтобы lineTo чертила под нужным мне градусом...
Поворот на нужный угол я нашел только для таких классов как Button, MovieClip и TextField.
Если вас не затруднит, уважаемый rainbowrussia, напишите как вы бы это сделали хотя бы для трех линий, а то я не понимаю вашей гениальной идеи.

На днях я получил рабочий вариант того, что я хотел(затратный, но рабочий).
Код AS1/AS2:
Line._x=15; 
Line._y=338;
for (i:Number=0; i<180;i++)
{
    Line.duplicateMovieClip("Line"+i,this.getNextHighestDepth());
    Line. _rotation=i;
 
}
stop();

Можно ли сделать этот код лучше, менее затратным что ли?


Последний раз редактировалось Ышву; 27.05.2010 в 01:39.
Старый 27.05.2010, 05:20
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 6  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Цитата:
Сообщение от Ышву Посмотреть сообщение
Можно ли сделать этот код лучше, менее затратным что ли?
Можно (идея не претендует не гениальность, я подсказал функции, котороые позволяют рисовать, не плодя мувиклипы, остальное - чистая математика, напрямую не относящаяся к флешу):

Код AS1/AS2:
var mc = this.createEmptyMovieClip('transp', this.getNextHighestDepth());
 
mc._x = 250;
mc._y = 250;
 
 
var r1 = 200;
var r2 = 210;
var r3 = 215;
var r4 = 230;
 
for (var i = 0; i<= 180; i++) {
 
	var ph = - Math.PI * i / 180;
 
	mc.lineStyle(1);
	mc.moveTo(Math.cos(ph)*r3, Math.sin(ph)*r3);
	mc.lineTo(Math.cos(ph)*r4, Math.sin(ph)*r4);
 
	if (Math.floor(i/5) == i/5) {
		mc.lineStyle(2);
		mc.moveTo(Math.cos(ph)*r2, Math.sin(ph)*r2);
		mc.lineTo(Math.cos(ph)*r4, Math.sin(ph)*r4);
	}
 
	if (Math.floor(i/10) == i/10) {
		mc.lineStyle(3);
		mc.moveTo(Math.cos(ph)*r1, Math.sin(ph)*r1);
		mc.lineTo(Math.cos(ph)*r4, Math.sin(ph)*r4);
	}
}
 
stop();
В результате получаем мувиклип "mc" с нарисованым транспортиром.

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

Регистрация: Feb 2008
Сообщений: 560
Бонус. Транспортир с цифрами, обозначающими градусы.
Вложения
Тип файла: rar tr.rar (9.8 Кб, 157 просмотров)

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

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

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


 


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


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