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

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

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

Регистрация: Dec 2015
Сообщений: 2
По умолчанию Вращение прямой вокруг своей оси с изменением длинны

Здравствуйте, друзья подскажите как можно реализовать такое вращение?
Изображения
 

Старый 20.01.2016, 13:00
ALeXVoz вне форума Посмотреть профиль Отправить личное сообщение для ALeXVoz Посетить домашнюю страницу ALeXVoz Найти все сообщения от ALeXVoz
  № 2  
Ответить с цитированием
ALeXVoz
 
Аватар для ALeXVoz

Регистрация: Nov 2008
Адрес: Ukraine, Kyiv
Сообщений: 94
Отправить сообщение для ALeXVoz с помощью Skype™
Невидимая точка (мувик) движется по нижним точкам с нужной скоростью твинером. между верхней и невидимой точкой по энтерфрейму рисуется линия. каждый последующий шаг - удалить старую линию (очистить graphics) и нарисовать новую линию уже в новое положение невидимой точки. самый простой алгоритм. а круговое движение делается изменением свойства rotation.
поищите примеры стрелочных часов, как там сделаны движения стрелок

Старый 20.01.2016, 15:51
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
pointTween.swf   (1.3 Кб)

Код AS3:
package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
 
 
	public class Main extends Sprite 
	{
		private var pX:Array = [200, 300, 250, 150, 100];
		private var pY:Array = [100, 200, 300, 300, 200];
		private var totalLen:Number=0;
		private var totalPos:Number = 0;
		private var step:Number = 2;
 
		public function Main():void 
		{
 
 
			var m:Shape = new Shape();
			addChild(m);
			for (var i:int = 0; i < pX.length; i++) 
			{
				// маркер точки
				m.graphics.beginFill(0x808080);
				m.graphics.drawCircle(pX[i], pY[i], 6);
				// сумма всех длин
				var j:int = (i + 1) % pX.length;
				totalLen += new Line(pX[i], pY[i], pX[j], pY[j]).length;
 
			}
 
			this.addEventListener(Event.ENTER_FRAME, this_enterFrame);
		}
 
		private function this_enterFrame(e:Event):void 
		{
 
			// шаг по общей длине
			totalPos += step;
			totalPos %= totalLen;
			var prevLen:Number = 0;
			var curLen:Number = 0;
			var line:Line;
			var lineLen:Number;
			// Ищем текущий отрезок
			for (var i:int = 0; i < pX.length; i++) 
			{
				var j:int = (i + 1) % pX.length;
				line = new Line(pX[i], pY[i], pX[j], pY[j]);
				lineLen = line.length;
				prevLen = curLen;
				curLen += lineLen;
				if (curLen > totalPos) break;
			}
			// точка на текущем отрезке
			var posOnLine:Number = (totalPos - prevLen) / lineLen;
			var tP:Point = line.getPos(posOnLine);
			graphics.clear();
			graphics.lineStyle(2);
			graphics.moveTo(pX[0], pY[0]);
			graphics.lineTo(tP.x, tP.y);
		}
 
	}
 
}
import flash.geom.Point;
class Line 
{
	public var x1:Number;
	public var x2:Number;
	public var y1:Number;
	public var y2:Number;
	public var length:Number;
 
	public function Line(x1:Number,y1:Number,x2:Number,y2:Number ) 
	{
		this.x1 = x1;
		this.x2 = x2;
		this.y1 = y1;
		this.y2 = y2;
		var dX:Number = x2 - x1;
		var dY:Number = y2 - y1;
		length = Math.sqrt(dX * dX + dY * dY);
	}
 
	public function getPos(t:Number):Point
	{
		var tX:Number = x1 + t * (x2 - x1);
		var tY:Number = y1 + t * (y2 - y1);
		return new Point(tX, tY);
 
	}
 
}
Вложения
Тип файла: swf pointTween.swf (1.3 Кб, 101 просмотров)

Старый 20.01.2016, 18:10
bayar вне форума Посмотреть профиль Отправить личное сообщение для bayar Найти все сообщения от bayar
  № 4  
Ответить с цитированием
bayar

Регистрация: Dec 2015
Сообщений: 2
Спасибо, silin. То что нужно. Еще один вопрос, если вместо спрайта будет использоваться мувик, то алгоритм не меняется?

Старый 20.01.2016, 20:31
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Нет конечно, алгоритму это никак не навредит

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

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

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


 


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


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