void addFirework(double x, double y) { int seed = (int)DateTime.Now.Ticks; for (int i = 0; i < FIREWORK_NUM; i++) { seed += (int)DateTime.Now.Ticks; Random r = new Random(seed); double size = SIZE_MIN + (SIZE_MAX - SIZE_MIN) * r.NextDouble(); byte red = (byte)(128 + (128 * r.NextDouble())); byte green = (byte)(128 + (128 * r.NextDouble())); byte blue = (byte)(128 + (128 * r.NextDouble())); double xVelocity = X_VELOCITY - 2 * X_VELOCITY * r.NextDouble(); double yVelocity = -Y_VELOCITY *r.NextDouble(); MagicDot dot = new MagicDot(red, green, blue, size); dot.X = x; dot.Y = y; dot.XVelocity = xVelocity; dot.YVelocity = yVelocity; dot.Gravity = GRAVITY; dot.RunFirework(); _fireworks.Add(dot); LayoutRoot.Children.Add(dot); } }
///////////////////////////////////////////////////// // Private Methods ///////////////////////////////////////////////////// void moveFirework() { for (int i = _fireworks.Count - 1; i >= 0; i--) { MagicDot dot = _fireworks[i]; dot.RunFirework(); if (dot.Opacity <= 0.1) { LayoutRoot.Children.Remove(dot); _fireworks.Remove(dot); } } }