Probleme mit Transformsprite
Verfasst: 07.08.2015 01:08
Bei folgendem Code ( pB 5.31 \ X86 ) kann ich das Sprite nicht komplett über den rechten Rand heraus schieben. Wenn es rechts bis zur Hälfte über den Rand raus ist, verschwindet es komplett.
Wobei es von dem Linken Rand perfekt wieder in den Bildschirm kommt.
Habe das in Pb 4.51 x86 und 5.11 x86 getestet, dort funktioniert das einwand frei.
Wenn das nun ein Bug ist, bitte ich diejenigen von euch, welche der englischen Sprache mächtig sind, es eventuell weiter zu leiten.
Schaut selbst....
Wobei es von dem Linken Rand perfekt wieder in den Bildschirm kommt.
Habe das in Pb 4.51 x86 und 5.11 x86 getestet, dort funktioniert das einwand frei.
Wenn das nun ein Bug ist, bitte ich diejenigen von euch, welche der englischen Sprache mächtig sind, es eventuell weiter zu leiten.
Schaut selbst....
Code: Alles auswählen
EnableExplicit
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't open the sprite system", 0)
End
EndIf
OpenScreen( 1024, 768,32, "Test", 0 )
Define x.i = 800, w.i = 0
ClearScreen(0)
StartDrawing( ScreenOutput() )
Box( 0, 0, 127, 127, $FFFFFF )
StopDrawing()
GrabSprite( 1, 0, 0, 127, 127, #PB_Sprite_AlphaBlending )
Procedure DisplayTransformSprite(Sprite.i, X.f, Y.f, Width.f, Height.f, Angle.f, CenterX.f=0, CenterY.f=0, Transparency=255)
Protected Sin.f = Sin(Radian(Angle)), Cos.f = Cos(Radian(Angle))
TransformSprite(Sprite, Cos*(-Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Sin*(-Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), Cos*( Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Sin*( Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), Cos*( Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Sin*( Width*0.5-CenterX) + Cos*( Height*0.5-CenterY), Cos*(-Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Sin*(-Width*0.5-CenterX) + Cos*( Height*0.5-CenterY))
DisplayTransparentSprite(Sprite, X, Y, Transparency)
EndProcedure
SetFrameRate(60)
Repeat
ExamineKeyboard()
ClearScreen(0)
DisplayTransformSprite( 1, x, 384, 128, 128, w, 0, 0, 255 )
x+1: w+1
If w > 359: w-360: EndIf
If x > 1023 + SpriteWidth( 1 )/2: x = 0 - 128/2: EndIf
StartDrawing( ScreenOutput() )
Circle( x, 384, 4, $00FF00 );SpriteCenter anzeigen lassen
StopDrawing()
FlipBuffers()
Until KeyboardPushed( #PB_Key_Escape )