Silverlight-弹球(一)
时间:2011-01-19 来源:dark1982
目标:
1:可以发射一个弹球,在给定范围内不停的弹射。
2:可以用鼠标控制弹球的发射角度。
3:入射角度和反射角度符合基本的几何原理。 球的速度保持一定。
要点:
1:使用StoryBoard和DoubleAnimation来实现球的运动。
2:通过边界测试计算弹球的运动轨迹和边界的交点。
3:计算弹球撞击边界时的入射角和反射角。
该版本只有一个弹球,在以后的版本中会有任意多个弹球,并且弹球在运动中可能会互相撞击。
下面大致看一下代码:
1:弹球的定义,只有一个自定义属性-方向
public class Ball:Control
{
public Direction CurrentPosition = Direction.Top;
}
2:弹球的样式
代码
<Style x:Name="StyleBall" x:Key="StyleBall" TargetType="ctrl:Ball">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ctrl:Ball">
<!-- Template's Root Visual -->
<Image Source="Images/BlueBall.png" Height="75" Width="75"></Image>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
3:一个边界测试帮助类
其中以左上角为坐标原点
直线的方程为: y1 = k1*x1 + a; y2 = k2*x2 + b;
两线相交时,x1 = x2, y1 = y2
x1 = (b - a) / (k1 - k2)
其中k是斜率,a是和Y轴的交点。斜率可以通过Math.Tan(angle), 注意这里的角度是弧度制的。
程序代码
相关阅读 更多 +