Frage zu object[]
Übersicht

RWBetreff: Frage zu object[] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Ich komme mit den Datentyp object[] nicht so ganz klar. z.B. bei CollideImage local collisions:Object[] anz_collisions = CollideImage(ball, x, y, 0, 1, 0) Wie Frage ich das Object-array ab, bzw. welchen Datentyp hat es? Hier z.B. ist ball vom Typ Tball(selbst definiert). local temp:Tball temp = anz_collisions[0] funktioniert nicht. temp = Tball(anz_collisions[0]) funktioniert auch nicht. Welchen Datentyp hat das Rückgabearray denn nun? Gruß RW |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
object ist ein Typ. Es ist der Basistyp aller Types genauer gesagt. Es stellt eine Referenz auf ein objekt dar, dass man in den gewünschten Type casten kann danach.
Der Array beinhaltet dabei alle kollisionen oder besser die Referenzen auf die Images mit denen kollidiert wurde. was dein beispiel oben allerdings genau soll ... ich weiss nicht. du definierst collisions als array und anz_collisions dann um die rückgabe entgegen zu nehmen, was so garnix gibt |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
RW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Sorry Dreamora, war ein Tipfehler (heisst natürlich Local anz_collisions:Object[]) Hier mal ein Codeausschnitt. Code: [AUSKLAPPEN] Type Tball Field ball:timage Field x:Float Field y:Float Field dx:Float Field dy:Float Field sp:Float ... Method Test_Collision2() Local anz_collisions:Object[] ResetCollisions For Local temp_ball:Tball = EachIn ballList If temp_ball <> Self 'Write to Writemask CollideImage temp_ball.ball, temp_ball.x, temp_ball.y, 0, 0, 1 EndIf Next 'Test Collision anz_collisions = CollideImage(ball, x, y, 0, 1, 0) If anz_collisions For Local x = 0 To Len(anz_collisions) -1 Local temp_ball:Tball temp_ball = Tball(anz_collisions[x]) ... Enthält temp_ball nun einen Typ TBall oder ein Image (Timage)? Gruß RW |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
TImage ist da drin, das ist ja auch das was du in die Collisionmask reinschreibst. Etwas anderes kennt es ja nicht.
Man könnte es aber von hand entsprechend erweitern, die sources sind ja verfügbar ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
RW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Lass mal mit den Sources. Bin froh, wenn ich mit dem Standard klarkomme ![]() Müsste beim unteren Code die IF-Bedingung (If timage...)nicht ziehen?? Wenn ich jetzt nicht kapiere, gehts ins Bett !!! Gruß RW Code: [AUSKLAPPEN] Strict Const C_WIDTH = 1024 Const C_HEIGHT = 768 Graphics C_WIDTH, C_HEIGHT, 32 SetMaskColor 0, 0, 0 ' Create Ball Image SetMaskColor 0, 0, 0 SetColor 0, 0, 255 DrawOval 100,100, 24,24 Global ball_image:timage = CreateImage(24, 24) GrabImage ball_image, 100, 100 Local colls:Object[] Cls DrawImage ball_image, 100, 100 DrawImage ball_image, 105, 105 DrawImage ball_image, 110, 110 Flip ResetCollisions CollideImage ball_image, 100, 100, 0, 0, 1 CollideImage ball_image, 105, 105, 0, 0, 1 colls = CollideImage(ball_image, 110, 110, 0, 1, 0) If colls Print"" Print Len(colls) Print "Collide" If timage(colls[0]) = ball_image Print "" Print "Yes" EndIf Else Print "" Print "No Collide" EndIf While Not KeyDown(KEY_ESCAPE) Wend |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe mir das ganze gerade nochma angesehen:
1. Mit dem letzten Parameter könntest du auch TBall objekte übergeben. Bei der rückgabe musst du diese jedoch explizit auf TBall zurückcasten über TBall( ... ) Beim rest werd ich ma schauen ob ich aufgrund des sources das prob finde. bei mir endet das in ner endlos schleife bei den 2 ersten collideimages |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
RW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm,
der letzte Code funktioniert bei mir. Bis auf die Abfrage des Object Array´s ![]() RW |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group