Problem: Sprite dynamisch erstellen und später Grösse ändern

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Problem: Sprite dynamisch erstellen und später Grösse ändern

Beitrag von Dostej »

Also, ich möchte folgendes machen:
Ein Sprite dynamisch erstellen und das dann später in der Grösse verändern.
Krieg ich nicht hin. (Vermutlich das berühmte Brett vorm Kopf)

Ich hab mal ein Beispiel gemacht mit Konstanten, um zu zeigen, wie es gedacht ist (1. Teil)

Und dann als 2. Teil die Idee, die aber nicht geht...

Hat jemand ne Idee?

Code: Alles auswählen



If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()= 0
  MessageRequester("Fehler", "init") 
  End 
EndIf

Compilerif 1

If OpenWindow(1, 0, 0, 1024, 768, "", #PB_Window_BorderLess)
  If OpenWindowedScreen(WindowID(1), 0, 0, 1024, 768, 0, 0, 0)
    
    SpriteID_L = CreateSprite(2, 128, 128)
    Debug SpriteID_L
    Debug SpriteWidth(2)
    Debug SpriteHeight(2)
    
    SpriteID_L = CreateSprite(2, 256, 256)
    Debug SpriteID_L
    Debug SpriteWidth(2)
    Debug SpriteHeight(2)
    
    FreeSprite(2)
  EndIf
EndIf

Compilerelse

If OpenWindow(1, 0, 0, 1024, 768, "", #PB_Window_BorderLess)
  If OpenWindowedScreen(WindowID(1), 0, 0, 1024, 768, 0, 0, 0)
    
    SpriteID_L = CreateSprite(#PB_Any, 128, 128)
    Debug SpriteID_L
    Debug SpriteWidth(SpriteID_L)
    Debug SpriteHeight(SpriteID_L)
    
    CreateSprite(SpriteID(SpriteID_L), 256, 256)
    Debug SpriteID_L
    Debug SpriteWidth(SpriteID_L)
    Debug SpriteHeight(SpriteID_L)
    
    FreeSprite(SpriteID_L)
  EndIf
EndIf
Compilerendif

End
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Schau Dir mal:

Code: Alles auswählen

 ZoomSprite3D(#Sprite3D, Breite, Höhe)
an.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

Danke, kenn ich...
Ich suche ne Lösung für das oben genannte Problem....
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Du willst also die SpriteID für ein anderes Sprite wiederverwenden?

Lösung:
FreeSprite() vor den 2ten CreateSprite()
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Also mit PB-Only-Befehlen ist es bisher nicht möglich, existierende
Sprites in der Größe zu verändern. Stefan hat mal vor einer langen zeit
eine Prozedur veröffentlicht, welche mit hilfe von DX das ganze aber löst
:D

hier Code wo ich das ding eingebunden hab ... kannst aber auch im
Forum nach suchen ... in dem Thread steht glaub noch einiges nützliches
drinne wo Stefan diesen Code veröffentlicht hat.
http://www.purebasic.fr/german/viewtopi ... 6&start=27

Und "dynamisch" heißt für mich, du arbeistest mit #PB_Any und nicht mit
festen Werten (Konstanten), also

Code: Alles auswählen

SpriteID = CreateSprite(#PB_Any, 128, 128)
MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten