Ich habe einen Canvas (playArea) erstellt, auf dem ich 1 Bee hinzugefügt habe (unter Verwendung von playArea.children.Add(bee)
). Und ich füge auch neue box
alle X Sekunden an zufälligen Punkten auf dem playArea
hinzu. Ich bin in der Lage, meine bee
von dem aktuellen Punkt zu dem Punkt, den ich klicke, mit Storyboard
und DoubleAnimation
zu verschieben.C# Lösche UIElement, wenn ein anderes UIElement ihn passiert
Was ich tun möchte, ist ich die box
löschen möchten, die bee
durchläuft (wie es nur playAre.Children.Remove(box)
tun sollte. Ich kann es einfach nicht herausfinden, wie es zu überprüfen.
Hier ist ein Beispiel: Wenn ich auf A klicke, würde mein bee
zu diesem Punkt gehen und die 3 Kästchen auf dem Weg entfernen.Ich dachte, ich sollte wahrscheinlich meine eigene EventHandler
verwenden (ich bin mir nicht sicher, wie ich meine eigene machen soll Aber das ist ein anderes Problem.) Also, was soll ich tun, oder welche Bedingung sollte ich machen?
EDIT: So sieht meine Methoden aus wie ich. Was ich an der beggining tun, ziehe ich nur eine Biene und fügen Sie ihn in meiner Leinwand, und alle X Sekunden ich nur hinzufügen, eine neue Box an zufälligen Ort
//moving the bee to the position which I got from Point p = Mouse.GetPosition(playArea);
public static void MoveBee(UIElement element, double toX, double toY)
{
double fromX = Canvas.GetLeft(element);
double fromY = Canvas.GetTop(element);
Storyboard storyboard = new Storyboard();
DoubleAnimation animationX = CreateDoubleAnimation(element,
fromX, toX, new PropertyPath(Canvas.LeftProperty));
DoubleAnimation animationY = CreateDoubleAnimation(element,
fromY, toY, new PropertyPath(Canvas.TopProperty));
storyboard.Children.Add(animationX);
storyboard.Children.Add(animationY);
storyboard.Begin();
}
public static DoubleAnimation CreateDoubleAnimation(UIElement element,
double from, double to, PropertyPath propertyToAnimate)
{
DoubleAnimation animation = new DoubleAnimation();
Storyboard.SetTarget(animation, element);
Storyboard.SetTargetProperty(animation, propertyToAnimate);
animation.From = from;
animation.To = to;
animation.Duration = TimeSpan.FromSeconds(3);
return animation;
}
public void DrawBox()
{
BoxControl newBox = new BoxControl();
playArea.Children.Add(newBox);
Canvas.SetTop(newBox, random.Next(0, 419));
Canvas.SetLeft(newBox, random.Next(0, 792));
}
welchem Rahmen ist das? Einheit? Das Aktualisieren des Titels oder der Tags bringt mehr sachkundige Personen. – akatakritos
Es ist .NET, aktualisiert es – Tripper
Sie müssen die Position Ihrer Biene und Ihre Box (verwenden Sie Canvas.GetLeft, Canvas.GetTop Methoden dafür) und seine Dimensionen. Dann ist es ein wenig einfache Mathematik, um zu überprüfen, ob die Biene durch die Box gegangen ist. Sie müssen dies für alle Boxen tun (Sie können die Sammlung von ihnen erhalten wie diese playArea.children.OfType()). Aber es ist schwer zu helfen, es sei denn du stellst einen Code zur Verfügung, mit dem du arbeitest –
Omilis