2013-03-27 3 views
-2

내 코드에서 do while 루프를 z 변수로 사용하려면 어떻게해야합니까?"variable".Bounds.IntersectsWith

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"를 사용할 수 없다는 것입니다.

답변

0

실제로 문제는 zObject으로 선언된다는 사실에서 비롯됩니다. Object 그 자체로는 어떤 속성도 없습니다 (물론, 정말 기본적인 것만 있습니다). 그것은 확실히 bounds 속성이나 메서드가 없으므로 사용할 수 없습니다.

당신이해야 할 일은 z을 코드에있는 실제 유형으로 선언하면 해당 속성에 액세스 할 수 있습니다. 그렇지 않으면 메서드에서 인수로 Object을 사용해야하는 경우 CType(z, TypeOfZ)을 사용하여 z을 메서드에서 올바른 형식으로 캐스팅해야합니다.

코드에서 나는 z이 일종의 경계 상자라고 가정합니다. 어쨌든 메서드에있는 내용으로 선언해야합니다 (예 :

).
Function make(ByVal z As BoundingBox) 
    ... 
    If z.Bounds.IntersetcsWith(...) then 
     ... 
    End If 
    ... 
End Function