как делет экземпляр на wpf c# - PullRequest
0 голосов
/ 22 января 2020

Я делаю мини-игру на wpf, но мне нужно знать, как удалять объекты F1 и f2, проблема в том, что только я могу удалить объект F1

Класс Main Windows

        public MainWindow()
    {
        SharedInstance = this; // Singleton

        InitializeComponent();


        primero = new Personaje(Canvas);
        Lista.Add(F1 = new Floor(Canvas, Fx1, Fy1));
        Lista.Add(F2 = new Floor(Canvas, Fx2, Fy2));


            dp = new DispatcherTimer();
        dp.Interval = new TimeSpan(0, 0, 0, 0, 25);

        dp.Tick += new EventHandler(dp_tick);
        dp.IsEnabled = true;

    }

    public void dp_tick(object sender, EventArgs e)
    {


        primero.MainMove();
        //Tengo que llamar al canvas c del floor
        if (primero.x >= 700 && primero.x <= 760 && primero.y == 265)
        {
            Lista.Remove(F1);
            Lista.Remove(F2);
            Floor.SharedInstance.c.Children.Remove(Floor.SharedInstance._F);

        }

Этаж класса

здесь он создает объект F1 и F2, затем он создается основным windows

class Floor
{

    public static Floor SharedInstance;
    public int x, y;
    public int w = 700;
    public int h = 5;
    public Canvas c;

    public Rectangle _F = new Rectangle();
    public SolidColorBrush CF1 = new SolidColorBrush();


    public Floor(Canvas c, int x, int y)
    {
        SharedInstance = this;
        this.x = x;
        this.y = y;
        this.c = c;



        CF1.Color = Color.FromRgb(0, 255, 0);

        _F.Width = w;
        _F.Height = h;
        _F.Fill = CF1;
        Canvas.SetTop(_F, y); //195
        Canvas.SetLeft(_F, x); // 0

        c.Children.Add(_F);

 }

этот объект F1 и F2 создается холстом .. но, как я уже говорил, только Delet F1, а не F2

1 Ответ

0 голосов
/ 22 января 2020

Не очень понятно, что должно случиться с Canvas и прямоугольниками, но я бы рекомендовал сохранить код, связанный с удалением, в классе Floor:

class Floor
{
    public static Floor SharedInstance;
    public int x, y;
    public int w = 700;
    public int h = 5;
    public Canvas c;

    public Rectangle _F = new Rectangle();
    public SolidColorBrush CF1 = new SolidColorBrush();

    public Floor(Canvas c, int x, int y)
    {
        SharedInstance = this;
        this.x = x;
        this.y = y;
        this.c = c;

        CF1.Color = Color.FromRgb(0, 255, 0);

        _F.Width = w;
        _F.Height = h;
        _F.Fill = CF1;
        Canvas.SetTop(_F, y); //195
        Canvas.SetLeft(_F, x); // 0

        c.Children.Add(_F);
    }

    public void Clear()
    {
        c.Children.Remove(_F);
    }
}

, а затем

if (primero.x >= 700 && primero.x <= 760 && primero.y == 265)
{
    Lista.Remove(F1);
    Lista.Remove(F2);
    Floor.SharedInstance.Clear();
    // or possibly this (SharedInstance stores only one Floor object)
    F1.Clear();
    F2.Clear();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...