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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.01.2014, 02:41
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 11  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вам вот так нужно или как-то по другому?
radius.swf   (1.7 Кб)
Вложения
Тип файла: swf radius.swf (1.7 Кб, 54 просмотров)

Старый 22.01.2014, 23:12
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 12  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Извините, я ошибся. То, что я хочу сделать — оно никак невыразимо.

Как можно узнать сколько нужно отнимать пикселей от радиуса, чтобы при приближение точки A к точке B радиус был равен нулю? Если я имею такие условия:
Радиус: 200 пикселей. R — расстояние, на которое звёзды отходят от точки A.
Скорость: 10 пикселей. S — скорость, с которой двигается точка A к точке B.
Расстояние: 1000 пикселей. D — расстояние от точки A до точки B.

Вопрос, изначально, был таким. Просто я немного не туда ушёл и напридумывал не то, отсюда и недопонимание.

Старый 22.01.2014, 23:21
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 13  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Это я если честно не то наверное показал, сам говорил о процентах, а сделал вообще другое.
Вам нужно ( если не прав то поправьте ( просто я опять читаю ваши слова и мне кажется, что нужны проценты ) ) - у Вас точка А находится центром в (300,300) и радиус у неё 200. Точка В находится (800,300) и расстояние между АВ=500. И вот Вам нужно равномерно уменьшить радиус с 200 до 0, по мере приближения А к В? Так? То есть, расстояние может между точками быть разное, но оно всегда учитывается при расчете радиуса? Так?

Старый 22.01.2014, 23:26
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 14  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Да, в любом случае. Вообще, так: если расстояние 100 пикселей, скорость 10 пикселей, а радиус 200 пикселей, то, по идее, если я поделю 200 на 10 и получу 20, то 20 есть то, что нужно отнимать (от радиуса) каждый раз, когда точка приближается к другой точке. Кажется, я ответил на свой вопрос.

Старый 22.01.2014, 23:29
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 15  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Нет, по Вашей логике, если расстояние будет 1000 и Вы разделите на 10 то будет 100, которые Вы каждый пиксель будете отнимать от радиуса.

Добавлено через 23 минуты
я сейчас покажу, как я бы сделал, в минимальном примере.

Старый 23.01.2014, 00:19
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 16  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Если Вам нужно так, то Вы были почти правы, а я немного ошибся - Вам так нужно?
Эффект, какой-то не очень...
radius2.swf   (1.7 Кб)
Вложения
Тип файла: swf radius2.swf (1.7 Кб, 51 просмотров)

Старый 23.01.2014, 00:44
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 17  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Да, именно так.

Старый 23.01.2014, 00:55
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 18  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Код AS3:
package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
	public class Orbit extends Sprite 
	{
		private var _target:Shape;
		private var _frameRate:Number;
		private var _isNoClick:Boolean;
 
		public function Orbit() 
		{
			stage.color = 0x000000;
			_frameRate = stage.frameRate;
 
			_target = new Shape();
			_target.graphics.beginFill(0x82AC28);
			_target.graphics.drawCircle(0, 0, 3);
			_target.graphics.endFill();
			_target.x = 700;
			_target.y = 300;
			super.addChild(_target);
 
			_circle = new Shape();
			_isNoClick = true;
			stage.addEventListener(MouseEvent.CLICK, stage_click);
		}
 
		private const CIRCLE_RADIUS:uint = 200;
 
		private var _circle:Shape;
 
		private var _startX:Number;
		private var _startY:Number;
		private var _finishY:Number;
		private var _finishX:Number;
		private function stage_click(event:MouseEvent):void 
		{
			if (_isNoClick)
			{
				_circle.graphics.lineStyle(1, 0xCFBB2C);
				_circle.graphics.drawCircle(0, 0, 200);
				_circle.graphics.lineStyle(1, 0xE81313);
				_circle.graphics.drawCircle(0, 0, 3);
				_circle.graphics.endFill();
				_circle.x = mouseX;
				_circle.y = mouseY;
				super.addChild(_circle);
 
				_startX = _circle.x;
				_startY = _circle.y;
 
				_finishX = _target.x-_startX;
				_finishY= _target.y-_startY;
 
 
				_isNoClick = false;
				_allTime = 0;
				stage.addEventListener(Event.ENTER_FRAME, stage_enterFrame);
 
			}
		}
		private var _allTime:Number;
		private var _duration:Number = 10;
		private function stage_enterFrame(event:Event):void 
		{
			var time:Number = 1 * 0.001 * _frameRate;
			_allTime += time;
			var ratio:Number = _allTime / _duration;
 
			_circle.graphics.clear();
			_circle.graphics.lineStyle(1, 0xCFBB2C);
			_circle.graphics.drawCircle(0, 0, CIRCLE_RADIUS - CIRCLE_RADIUS/100*ratio*100);
			_circle.graphics.lineStyle(1, 0xE81313);
			_circle.graphics.drawCircle(0, 0, 3);
			_circle.graphics.endFill();
 
			if (ratio >= 1)
			{
				ratio = 1;
				_isNoClick = true;
				stage.removeEventListener(Event.ENTER_FRAME, stage_enterFrame);
				super.removeChild(_circle);
			}
 
			_circle.x = ratio * _finishX + _startX;
			_circle.y = ratio * _finishY + _startY;
 
		}
	}
 
}

Старый 23.01.2014, 21:23
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 19  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
CIRCLE_RADIUS - CIRCLE_RADIUS/100*ratio*100

А что за 100?

Старый 23.01.2014, 22:03
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 20  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
CIRCLE_RADIUS - это константа минимального радиуса,
- CIRCLE_RADIUS из которой мы хотим отнять немножечко, поэтому
/100 делим её (200) на сто, переводим в проценты, 1% = 2
*ratio свойство соотношения которое в данном случаи может быть от 0 до 1, мы рассматриваем как процентную шкалу, но так как она от нуля до одного, а нам нужно же сто процентов, по этому
*100 мы её умножаем на сто.

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

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

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


 


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


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