|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Извините, я ошибся. То, что я хочу сделать — оно никак невыразимо.
Как можно узнать сколько нужно отнимать пикселей от радиуса, чтобы при приближение точки A к точке B радиус был равен нулю? Если я имею такие условия: Радиус: 200 пикселей. R — расстояние, на которое звёзды отходят от точки A. Скорость: 10 пикселей. S — скорость, с которой двигается точка A к точке B. Расстояние: 1000 пикселей. D — расстояние от точки A до точки B. Вопрос, изначально, был таким. Просто я немного не туда ушёл и напридумывал не то, отсюда и недопонимание. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Это я если честно не то наверное показал, сам говорил о процентах, а сделал вообще другое.
Вам нужно ( если не прав то поправьте ( просто я опять читаю ваши слова и мне кажется, что нужны проценты ) ) - у Вас точка А находится центром в (300,300) и радиус у неё 200. Точка В находится (800,300) и расстояние между АВ=500. И вот Вам нужно равномерно уменьшить радиус с 200 до 0, по мере приближения А к В? Так? То есть, расстояние может между точками быть разное, но оно всегда учитывается при расчете радиуса? Так? |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Да, в любом случае. Вообще, так: если расстояние 100 пикселей, скорость 10 пикселей, а радиус 200 пикселей, то, по идее, если я поделю 200 на 10 и получу 20, то 20 есть то, что нужно отнимать (от радиуса) каждый раз, когда точка приближается к другой точке. Кажется, я ответил на свой вопрос.
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Нет, по Вашей логике, если расстояние будет 1000 и Вы разделите на 10 то будет 100, которые Вы каждый пиксель будете отнимать от радиуса.
Добавлено через 23 минуты я сейчас покажу, как я бы сделал, в минимальном примере. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Если Вам нужно так, то Вы были почти правы, а я немного ошибся - Вам так нужно?
Эффект, какой-то не очень... |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Да, именно так.
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
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; } } } |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
CIRCLE_RADIUS - CIRCLE_RADIUS/100*ratio*100
А что за 100? |
|
|||||
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, время: 04:53. |
|
« Предыдущая тема | Следующая тема » |
|
|