-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它的实际类型(无论您的代码中是什么),您将能够访问它的属性。否则,如果您确实需要在方法中使用Objectas 参数,则应在方法中z转换为正确的类型,使用CType(z, TypeOfZ).

从您的代码中,我假设这z是某种边界框?无论如何,您应该将其声明为方法中的内容,例如

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