Blazor - движущиеся пузырьки с использованием таймера и без использования JS и CSSC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Blazor - движущиеся пузырьки с использованием таймера и без использования JS и CSS

Сообщение Anonymous »

Я новичок в Blazor и нуждаюсь в вашей помощи, пожалуйста. Мне нужно создать страницу, такую ​​как cryptobubbles.net, которая имеет движущиеся пузырьки, и они меняют направление, когда границы сталкиваются, а также смотрят на эффект сопротивления мыши, чтобы переместить каждый пузырь. В моем проекте нельзя использовать JS и CSS. > < /p>
Я попробовал код ниже, но результат - это не то, что я ищу. < /p>



@foreach (var bubble in bubbles)
{

}


< /code>
раздел кода: < /p>
protected override async Task OnInitializedAsync()
{
// Initialize bubbles
for (int i = 0; i < 30; i++)
{
var bubble = new Bubble
{
X = new Random().Next(10, 1400),
Y = new Random().Next(10, 1400),
Radius = new Random().Next(30, 60),
SpeedX = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
SpeedY = new Random().NextDouble() * 2 - 1, // Speed between -1 and 1
Color = $"hsl({new Random().Next(360)}, 100%, 50%)"
};

bubbles.Add(bubble);
}

// Set up a timer to update bubbles' positions
timer = new Timer(30); // 30 milliseconds interval
timer.Elapsed += TimerElapsed;
timer.Start();

await base.OnInitializedAsync();
}

private void TimerElapsed(object sender, ElapsedEventArgs e)
{
foreach (var bubble in bubbles)
{
// Update bubble's position
bubble.X += bubble.SpeedX;
bubble.Y += bubble.SpeedY;

// Check for collisions with boundaries
if (bubble.X - bubble.Radius < 0 || bubble.X + bubble.Radius > 300)
bubble.SpeedX *= -1; // Reverse direction if hits the edge

if (bubble.Y - bubble.Radius < 0 || bubble.Y + bubble.Radius > 500)
bubble.SpeedY *= -1; // Reverse direction if hits the edge

// Check for collisions with other bubbles
foreach (var otherBubble in bubbles)
{
if (bubble != otherBubble && bubble.CollidesWith(otherBubble))
{
// Change direction after collision
bubble.SpeedX *= -1;
bubble.SpeedY *= -1;
otherBubble.SpeedX *= -1;
otherBubble.SpeedY *= -1;
}
}
}

InvokeAsync(StateHasChanged); // Update the UI
}

public async ValueTask DisposeAsync()
{
// Dispose timer when no longer needed
if (timer != null)
{
timer.Stop();
timer.Dispose();
}
}

public class Bubble
{
public double X { get; set; }
public double Y { get; set; }
public double Radius { get; set; }
public double SpeedX { get; set; }
public double SpeedY { get; set; }
public string Color { get; set; }

public bool CollidesWith(Bubble other)
{
var dx = X - other.X;
var dy = Y - other.Y;
var distance = Math.Sqrt(dx * dx + dy * dy);
return distance < (Radius + other.Radius);
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... js-and-css
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Blazor - движущиеся пузырьки с использованием таймера и без использования JS и CSS
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как предотвратить пузырьки исключения после повторных перебоев с @retryabletopic в Spring Kafka
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Остановить событие пузырьки кнопки в якоре
    Anonymous » » в форуме Html
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Остановить событие пузырьки кнопки в якоре
    Anonymous » » в форуме Jquery
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Движущиеся объекты OpenGL имеют черный след
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»