![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2011
Сообщений: 87
|
Вопрос следующий:
Есть круговая шкала на ней 12 цифр. Все это необходимо вращать, сохраняя читабельность цифр Поясняю: деления шкалы вращаются почасовой и против часовой стрелки при этом цифры также вращаются и всегда должны сохранять вертикальное (читабельное) положение относительно оси Y Вот графический пример (написан на делфи 7) До http://imglink.ru/show-image.php?id=...ca59dbc8cb780e После http://imglink.ru/show-image.php?id=...246a71a7ad8524 А вот как подобное реализовать в Флеше CS5 не знаю. |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
цифры вам не вращать нужно а перемещать (синус, косинус в помощь)
или можно вращать весь контейнер (с делениями и цифрами) а потом отдельно каждую цифру назад
__________________
low + |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 87
|
вот только как создать такой кантейнер я не знаю.
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Да, собственно, он и нафиг не нужен. Можно легко обойтись без вышеуказанного контейнера.
Вот, по-быстренькому набросал пример класса, который крутит циферблат без вращения цифр. package { import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; /** * ... * @author Серов Константин */ public class DigitsRotation extends Sprite { private var _angleStep: int = 360 / 12; private var _faceRadius: Number = 100; private var _allDigits: Vector.<TextField> = new Vector.<TextField>(); private var _initialAngle: int = 0; private var _increment: Number = 1; private var _cX: Number; private var _cY: Number; private var _degRad: Number = Math.PI / 180; public function DigitsRotation() { _cX = stage.stageWidth / 2; _cY = stage.stageHeight / 2; positionDigits(); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(e:Event):void { _initialAngle += _increment; for (var i:int = 0; i < _allDigits.length; i++) { _allDigits[i].x = _cX + Math.cos((_initialAngle + (i * _angleStep)) * _degRad) * _faceRadius; _allDigits[i].y = _cY + Math.sin((_initialAngle + (i * _angleStep)) * _degRad) * _faceRadius; } } private function positionDigits():void { for (var i:int = 1; i < 13; i++) { var tf:TextField = new TextField(); tf.text = String(i); tf.x = _cX + Math.cos((_initialAngle + (i * _angleStep)) * _degRad) * _faceRadius; tf.y = _cY + Math.sin((_initialAngle + (i * _angleStep)) * _degRad) * _faceRadius; _allDigits.push(tf); addChild(tf); } } } } |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 87
|
увы ошибка
Монтажный кадр 1, слой "Слой 1", кадр 1, строка 2 1037: Пакеты не могут быть вложенными. видемо не умею пользоваться подобным кодом |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
это код класса
чтобы использовать его в кадре попробуйте разобраться как происходит перемещение, и тогда написать в кадре аналогичный код не будет проблем
__________________
low + |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 87
|
данный цифирблать лишь 1 из 7 и 5 уже написаны в моем случаее необходимо большую часть рисовать вручную и объеденять пакеты с заранее отрисованным и анимированным содержимом я увы не умею
Добавлено через 32 минуты увы моих познаний в флаш явно не достаточно чтобы разобраться как работает код выше Последний раз редактировалось optemus; 28.12.2011 в 16:33. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Увы, тогда тут мы вряд ли чем поможем
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|