Seite 1 von 3

animationen durch viele bmp bilder

Verfasst: 13.01.2005 20:53
von captain third
ich hab ein problem :roll: (oh nein nicht schon wieder :mrgreen: )

ich habe auch schon 2 tutorials durchgelesen,eins das ich bei purearea finden konnte und eins bei robsite...

und ein anderes hatte ich schon runtergeladen...also ich will ein bild animieren,ich hänge da schon seit 3 tagen....ich versuchs mit hilfe und halt mit tuts(bevor wieder jemand meggert :) ) naja,aber irgendwie bekomm ichs net animiertich hab da so einiges versucht,manchmal konnt ich mich auch einfach ohrfeign weil ich ein totaln falschn code geschnipselt habe...naja ich zeig euch mal meinen

Code: Alles auswählen

Enumeration 
  #Bild1 
  #Cursor 
  #x
EndEnumeration 

;-loading...,please wait :D
InitSprite()
OpenScreen(800,600,16,"Test")
FontID3 = LoadFont(3, "Digital", 10)
InitKeyboard()
InitMouse()
LoadSprite(#Bild1,"C:\UniMatrix\Welcome.bmp")
LoadSprite(#Cursor,"C:\Eigene Dateien\Eigene Bilder\ico\CircuitPhantom.ico.bmp")
For x=1 To 10
LoadSprite(#x+x,"C:\Eigene Dateien\Eigene Bilder\Buttons\KochendatenHand"+Str(x)+".bmp",0)
TransparentSpriteColor(#x+x,255,0,255)
Next x
TransparentSpriteColor(#Cursor,255,0,255)
TransparentSpriteColor(#Bild1,255,0,255)
Delay(1000)
MouseLocate(300,300)

;-Hauptschleife 1
;   
Repeat 
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
DisplayTransparentSprite(#x+x,200,200) 
DisplayTransparentSprite(#Bild1,100,100)                        ;erst die bilder im hintergrund laden
DisplayTransparentSprite(#Cursor,MouseX(),MouseY())    ; Dann die bilder laden die im vordergrund sein solln!!!
If MouseButton(1)
;-überüprüfung ob ein bild gedrückt worden ist 
 If SpriteCollision(#Bild1, 100, 100, #Cursor, MouseX(), MouseY())
  StartDrawing(ScreenOutput())
  FrontColor(0,128,0)
  BackColor(0,0,0)
  Locate(300,300)
  DrawText("Bild wurde gedrückt")
  StopDrawing()
 Else
  StartDrawing(ScreenOutput())
  FrontColor(0,128,0)
  BackColor(0,0,0)
  Locate(300,300)
  DrawText("Bild wurde nicht gedrückt")
  StopDrawing()   
 EndIf
EndIf 
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
hoffe ihr könnt mir helfen,das es sich animiert :cry:

Verfasst: 13.01.2005 21:11
von KeyKon
Du solltes vielleicht auch mal ein bisschen einrücken!
Ich weiß jetzt nicht so genau was dein Problem ist aber Animationen macht man am besten mi Arrays auf der seite von PureBasic ist glube ich so ein Tutorial mit einer Animation.

KeyKon

Verfasst: 13.01.2005 21:14
von captain third
achso mit arrays,nagut danke für den tip ich gugge sofort

Verfasst: 13.01.2005 21:37
von captain third
ai ne....das ist mein liebliengstutorial....weil alles detaliert drinne steht...und von da habe ich es mit dem animiern...

irgendwo da untn steht da
DisplayTransparentSprite(10 + Anim,PosX,PosY)
da wollt ich fragen was das mit dem anim auf sich hat???anim wird nämlich gar nicht erklärt...sofern ich richtig geguggt habe

Verfasst: 13.01.2005 22:29
von captain third
kann mir keiner helfen oder will mir keiner helfen??? :cry:

Verfasst: 13.01.2005 22:33
von Zaphod
ein beispiel ist sogar bei purebasic bei:

unter PureBasic\Examples\Sources - Advanced\Waponez II\Waponez II.pb

Verfasst: 14.01.2005 01:00
von RaVeN99
da wollt ich fragen was das mit dem anim auf sich hat???anim wird nämlich gar nicht erklärt...sofern ich richtig geguggt habe
Du hast richtig geguggt. Statt anim kannste auch theoretisch abcdxyz schreiben - des iss einfach ne zähler variable...

Code: Alles auswählen

 For anim = 0 to 50
   DisplayTransparentSprite( x + anim, PlayerX, PlayerY)
 Next
In dem Falle packst du den index des bildes allerdings NICHT in die enumeration! Du lädst die einzelbilder ebenfalls einfach mit ner For-Schleife, und lässt dabei das x einfach hochzählen.
Ergebnis:
Bei ner animation mit wie in dem Beispiel 51 Frames haste von da ab Bilder mit nem index von 0 bis 50 im speicher.
In der For-Schleife die die einzelbilder anzeigt werden eben diese 51 Bilder der Reihe nach geblitted.


Zu gut Deutsch:
Du benutzt in deinem Code zwar ebenfalls eine Zählervariable - x in diesem falle - welche aber immer 0 ist, ergo der bild index wird nicht geändert, es wird immer das selbe pic gezeigt.
Aus der enumeration solltest dus einfach deswegen rausnehmen, weil ich nicht weiß ob und wie des da als konstante gehandled wird.

Code verbesser ich dir jetz aber nicht, da das mit der erklärung (lies sie aufmerksam und frag nicht in 5 minuten nochmal ;)) ein klacks sein sollte.


Mfg
RaVeN

Verfasst: 14.01.2005 07:24
von captain third
danke raven

ich versuchs :D

Verfasst: 14.01.2005 07:37
von captain third
wuhaaa ich habs hinjekriegt....die animation aniniert.....GOOOOOIIILLL einfach nur geil...das läuft zwar jetzt stunden lang und ganz schnell aber es funktioniert...ma guggnwas man noch draus machen kann :mrgreen: :mrgreen: :mrgreen: :mrgreen: :coderselixir:

Verfasst: 14.01.2005 12:28
von bobobo
ää .. kennst Du die puretools

die beinhalten animationen .. da kann man sich eventuell ne Menge Arbeit sparen.