【发布时间】:2014-05-01 00:41:36
【问题描述】:
首先,抱歉标题不好。我不确定如何为这个主题命名,因此请随时在必要时对其进行修改。
我在我的舞台内绘制了给定尺寸的 X 环。为了给它一些深度感,朝向屏幕边界的每个环都稍微宽一些:
最大的环应该与舞台的最大尺寸一样宽(注意,在图片中,我正在绘制 3 个额外的环,它们在舞台边界之外绘制)。它也应该是最小环的两倍宽。用环我指的是两个红色圆圈之间的空间。
在计算出最小环的宽度 _innerRadius 后,我正在使用
const RINGS:Number = 10; //the amount of rings, note we will draw 3 extra rings to fill the screen
const DEPTH:Number = 7; //the amount of size difference between rings to create depth effect
var radius:Number = 0;
for (var i:uint = 0; i < RINGS + 3; i++) {
radius += _innerRadius + _innerRadius * ((i*DEPTH) / (RINGS - 1));
_graphics.lineStyle(1, 0xFF0000, 1);
_graphics.drawCircle(0, 0, radius * .5);
}
底部的一个滑块从 0 到 100 是从最小到最大的绿色环的半径的百分比。
我尝试在最小半径和最大半径之间调整,如果 DEPTH 值为 1,则效果很好。但是,为了产生深度错觉,我不希望环之间的距离相同。
现在我已经尝试解决这个问题几个小时了,但似乎我碰壁了..似乎我需要某种非线性公式在这里..我将如何计算基于滑块百分比值?对从最小到最大的红色圆圈之间或红色圆圈之间的任何位置有效吗?
谢谢!
[编辑] 这是我的 _innerRadius 计算示例
//lets calculate _innerRadius for 10 rings
//inner ring width = X + 0/9 * X;
//ring 1 width = X + 1/9 * X;
//ring 2 width = X + 2/9 * X
//ring 3 width = X + 3/9 * X
//ring 4 width = X + 4/9 * X
//ring 5 width = X + 5/9 * X
//ring 6 width = X + 6/9 * X
//ring 8 width = X + 7/9 * X
//ring 9 width = X + 8/9 * X
//ring 10 width = X + 9/9 * X
//extent = Math.max(stage.stageWidth, stage.stageHeight);
//now we should solve extent = X + (X + 0/9 * X) + (X + 1/9 * X) + (X + 2/9 * X) + (X + 3/9 * X) + (X + 4/9 * X) + (X + 5/9 * X) + (X + 6/9 * X) + (X + 7/9 * X) + (X + 8/9 * X) + (X + 9/9 * X);
//lets add all X's
//extent = 10 * X + 45/9 * X
//extent = 15 * X;
//now reverse to solve for _innerRadius
//_innerRadius = extent / 15;
【问题讨论】:
标签: algorithm flash function math for-loop