打破一个foreach循环

时间:2015-11-24 15:31:54

标签: c# xaml windows-phone-8

我正在使用c#中的windows phone项目。在游戏中你需要获得“玩家”/椭圆内的红点。您可以使用加速计传感器控制播放器。

当红点在你体内时,计数器开始计数。这仅适用于第一个椭圆。此椭圆也被声明为XAML文件中的第一个椭圆。

当第一个红点位于播放器内部时,会调用if语句。但是当玩家在第二个红点上时,循环在if和else语句之间跳跃,但我不知道他为什么这样做......

编辑: 问题是,当我有一个点的交叉点时,我将开始计算,但由于它在foreach循环中,它将循环通过它5次 所以 dot1没有交集,所以转到else并将计数器重置为0 dot2没有交集,所以转到else并将计数器重置为0 dot3没有交集,所以转到else并将计数器重置为0 dot4没有交集,所以转到else并将计数器重置为0 dot5有一个交集,所以它开始计数。

但它再次循环,因为它在一个计时器中,因此它自动将计数器设置为0

有人知道为什么会这样吗?

foreach (Ellipse mellipse in mCanvas.Children.OfType<Ellipse>())
{
    if (mellipse.Name != "my_ellipse")
    {
        int ellipse_top = (int)my_ellipse.Margin.Top;
        int ellipse_left = (int)my_ellipse.Margin.Left;

        if (Canvas.GetLeft(mellipse) >= ellipse_left && Canvas.GetLeft(mellipse) + mellipse.Width <= ellipse_left + my_ellipse.Width && Canvas.GetTop(mellipse) >= ellipse_top && Canvas.GetTop(mellipse) + mellipse.Height <= ellipse_top + my_ellipse.Height)
        {
            my_ellipse.Fill = new SolidColorBrush(Colors.LightGreen);
            count++;
            System.Diagnostics.Debug.WriteLine(mellipse.Name);
            //if (count == 100)
            //{
            //    mellipse.Fill = new SolidColorBrush(Colors.Green);
            //    break;
            //}
            break;
        }
        else
        {
            my_ellipse.Fill = new SolidColorBrush(Colors.White);
            count = 0;
            System.Diagnostics.Debug.WriteLine("else");
        }
    }
}

[代码]

<Canvas Name="mCanvas">
        <Ellipse Name="my_ellipse" Fill="#FFF4F4F5" Height="100" Stroke="White" Width="100"/>

        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="140,106,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
        <TextBlock x:Name="textBlock1" Canvas.Left="44" TextWrapping="Wrap" Text="0" Canvas.Top="44" Foreground="#FF232020" FontSize="18.667"/>
        <Ellipse Name="_1" Fill="Red" Height="39" Canvas.Left="248" Stroke="Indigo" Canvas.Top="187" Width="39"/>
        <Ellipse Name="_2" Fill="Red" Height="39" Canvas.Left="185" Stroke="Indigo" Canvas.Top="390" Width="39"/>
        <Ellipse Name="_3" Fill="Red" Height="39" Canvas.Left="146" Stroke="Indigo" Canvas.Top="614" Width="39"/>
        <Ellipse Name="_4" Fill="Red" Height="39" Canvas.Left="316" Stroke="Indigo" Canvas.Top="509" Width="39"/>
    </Canvas>

[/代码]

Game_image XAML layout

0 个答案:

没有答案