0

私はプログラミングが初めてで、Windows 8 アプリ開発のために C# を学ぼうとしています。「Head First C# - 第 3 版」という本を使用しています。最初の例は失敗したようです。本を持っている人のために、これは 33 ページにリストされています。以下のコードでは、不要なメソッドを取り除き、関連するコードだけを残しました。

public sealed partial class MainPage : Save_the_Humans.Common.LayoutAwarePage
{
    public MainPage()
    {
        Random random = new Random();
        this.InitializeComponent();
    }

    private void startButton_Click(object sender, RoutedEventArgs e)
    {
        AddEnemy();
    }

    private void AddEnemy()
    {
        ContentControl enemy = new ContentControl();
        enemy.Template = Resources["EnemyTemplate"] as ControlTemplate;
        AnimateEnemy(enemy, 0, playArea.ActualWidth - 100, "(Canvas.Left)");
        AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100),
            random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)");
        playArea.Children.Add(enemy);
    }

    private void AnimateEnemy(ContentControl enemy, double from, double to, string propertyToAnimate)
    {
        Storyboard storyBoard = new Storyboard() { AutoReverse = true, RepeatBehavior = RepeatBehavior.Forever };
        DoubleAnimation animation = new DoubleAnimation()
        {
            From = from,
            To = to,
            Duration = new Duration(TimeSpan.FromSeconds(random.Next(4, 6)))
        };
        Storyboard.SetTarget(animation, enemy);
        Storyboard.SetTargetProperty(animation, propertyToAnimate);
        storyBoard.Children.Add(animation);
        storyBoard.Begin();
    }
}

問題は、インスタンス化されたフィールド「random」の使用にあります。コンパイル時のエラーは、「名前 'random' は現在のコンテキストに存在しません。」私は、何が問題を引き起こしているのかを知るのに十分なほど熟達していません。

        AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100),
            random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)");
4

2 に答える 2

2

あなたの確率変数はフィールドではありません。コンストラクターを次のように変更します。

private Random random;
public MainPage()
{
    this.random = new Random();
    this.InitializeComponent();
}
于 2013-09-30T21:15:40.413 に答える