作业帮 > 综合 > 作业

AS脚本代码解释onClipEvent (load){ab = _parent.circle2;}onClipEvent

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/16 04:45:27
AS脚本代码解释
onClipEvent (load)
{
ab = _parent.circle2;
}
onClipEvent (enterFrame)
{
ac = ab._width / 2 - 5;
mpos = Math.sqrt(ab._xmouse * ab._xmouse + ab._ymouse * ab._ymouse);
if (ac < mpos)
{
h = ac / mpos;
_x = ab._xmouse * h + ab._x;
_y = ab._ymouse * h + ab._y;
}
else
{
_x = _parent._xmouse;
_y = _parent._ymouse;
} // end if
updateAfterEvent();
}
onClipEvent (mouseDown)
{
if (_parent.hitme.hitTest(_root._xmouse,_root._ymouse))
{
} // end if
}
onClipEvent (mouseUp)
{
}
这个是眼珠子转动的代码 ,里面的对象有点乱 ,估计高手一看你就知道 ,我就不费力找了,我想了解下这个眼睛转动的设计思想是什么,
AS脚本代码解释onClipEvent (load){ab = _parent.circle2;}onClipEvent
主要注意flash的坐标和数学上的坐标y轴是方向相反的.数学上是向上,flash向下.flash的左上角是原点.
另外一个问题是这个眼珠随鼠标转动的实现中,是以眼珠正常位置的那个点作为原点(以下简称眼框原点).
鼠标所在位置,眼珠偏离时候所在位置和眼框原点3点一线.这样就让人看起来眼珠一直看着鼠标.
要实现的话,就是说,两两之间连线与X水平夹角要相同.
先算眼眶原点和鼠标的距离.除以(鼠标x坐标-眼框原点的x坐标),计算出水平夹角的cos值.
再用这个cos值去乘眼珠相对于眼框原点偏离的距离,得到眼珠必须处于的x偏离坐标.再+上眼框原点X坐标,得到这个眼珠在舞台上的绝对X坐标.
同理得出眼珠Y坐标.
再问: 恩 ,你的分析很有道理。但是放在这段代码里我还是看不懂 能劳烦结合上面的代码分析下吗?
再答: ab = _parent.circle2; ab就是眼眶 ac = ab._width / 2 - 5; 眼眶中心点到眼眶边的距离。这里减5作用应该是剪掉眼球的半径。毕竟眼球是跟眼眶相切。 mpos = Math.sqrt(ab._xmouse * ab._xmouse + ab._ymouse * ab._ymouse); 鼠标在眼眶上与眼眶原点的距离。x的平方+y平方 开根号这个应该能懂吧。 if (ac < mpos) 眼眶的半径小于鼠标离眼眶原点的距离 (说明鼠标脱离了眼眶范围) h = ac / mpos; 这个就是鼠标与眼眶原点连线跟水平x轴夹角的cos值 _x = ab._xmouse * h + ab._x; _y = ab._ymouse * h + ab._y; 计算眼球的绝对位置。ab._xmouse * h 是与眼眶原点的偏离量X坐标+眼眶相对于舞台的坐标=眼球在舞台的绝对x坐标同理y坐标。 else { _x = _parent._xmouse; _y = _parent._ymouse; } // end if 鼠标没有离开眼眶,眼球坐标取鼠标在ab眼眶中的坐标。 这个程序貌似还是AS2的。太落后了吧。另外做了这么多,才给10分啊。。。
再问: 在给我解决个疑问吧 一会马上采纳、追加分数 怎样定义眼眶中心为原点的?用AS3表述简单? 那该怎样改写?
再答: 定眼眶中心为原点,你点开眼眶元件,找找一个十字标,那个就是眼眶元件原点。拖好位置就可以。