-2

コード内の do while ループを変数 z で動作させるにはどうすればよいですか?

Function make(ByVal z As Object)
    z.Location = zloc
    z.Hide()
    zloc = New Point(RandomNumber(playspace.Width), RandomNumber(playspace.Height))
    If zloc.Y > 595 Then
        zloc = New Point(RandomNumber(playspace.Width), RandomNumber(playspace.Height))
    End If
    z.location = zloc
    Do While z.bounds.intersectswith(PictureBox1.Bounds, PictureBox2.Bounds, PictureBox3.Bounds)
        zloc = New Point(RandomNumber(playspace.Width), RandomNumber(playspace.Height))
        z.location = zloc
    Loop
    z.Location = zloc
    z.Show()
    Return (z)
End Function

問題は、変数で「.bounds.intersectswith」を使用できないことです。

4

1 に答える 1

0

あなたの問題は、zとして宣言されているという事実から来ていObjectます。Objectそれ自体にはプロパティはありません (まあ、本当に基本的なものだけです)。確かにboundsプロパティやメソッドがないので、それを使用することはできません。

あなたがする必要があるのはz、その実際の型として宣言することです (それがコード内にあるものは何でも)。そうすれば、そのプロパティにアクセスできるようになります。それ以外の場合、メソッドで引数として本当に使用する必要がある場合は、 を使用して、メソッドで正しい型にObjectキャストする必要があります。zCType(z, TypeOfZ)

あなたのコードから、それzはある種の境界ボックスだと思いますか? とにかく、次のように、メソッドにあるものとして宣言する必要があります

Function make(ByVal z As BoundingBox)
    ...
    If z.Bounds.IntersetcsWith(...) then
        ...
    End If
    ...
End Function
于 2013-03-27T01:33:40.520 に答える