Button sound nur einmal spielen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Ana

Betreff: Button sound nur einmal spielen

BeitragDi, Apr 20, 2010 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho,

ich versuche gerade mal einen allgemeinen und auch noch ganz hübschen button für meine anwendung zu schreiben, er soll ein klick von sich geben wenn die mause drauf ist ein anderes klick wenn sie geklickt wird, das bild ändern und true zurückgeben wenn er geklickt wurde, das geht auch alles solange es nur einen button gibt, bei mehreren geht meine art festzustellen das der button schon mal geklickt hat, wenn die maus drüber war nicht mehr auf. ich dachte mir das ganze so:

Code: [AUSKLAPPEN]

Global SoundBedingung  = True

Function Button(image1,image2,image3,x,y) ;Bild,Hintergrund nicht maus drauf,Hintergrund mausdrauf,x,y
   SoundBedingung2 = True
   re = False
   If ImagesOverlap (pixel,MouseX(),MouseY(),image1,x,y) Then
      
      If SoundBedingung  = True And SoundBedingung2 = True Then
         system = PlaySound (klick2)
         SoundBedingung = False
      EndIf
      
      Soundbedingung2 = False
      
      DrawImage image3,x,y
      Color 255,255,0
      Rect x,y,ImageWidth (image1),ImageHeight (image1),0
      Color 255,255,255
      
      If MouseDown(1) And lastclick + mausverzoegerung < MilliSecs() Then
         lastclick = MilliSecs()
         re = True
         If MilliSecs() = lastclick Then system = PlaySound (Sound_klick)
      EndIf
   Else
      DrawImage image2,x,y
   EndIf
      DrawImage image1,x,y
   If SoundBedingung2 = True Then SoundBedingung = True
   Text 100,100,SoundBedingung +" / " + SoundBedingung2
   Return re
End Function
   


Der gedanke ist halt das Soundbedinung feststellt ob schon das klickgeräusch gespielt wurde und soundbedinung2 schaut ob die images sich überscheiden, davor hab das für eine dynamische struktur an knöpfen verwendet mit einer for schleife da ging das gut aber bei einzelnen ist das halt doof weil wenn 2 da sind ja einer immer nicht berührt wird und so die globale immer true gesetzt wird

hat wer ne gute idee wie man das besser lösen kann?

Xeres

Moderator

BeitragDi, Apr 20, 2010 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum packst du das alles nicht in einen Type? Dann kann man auch den Status mehrerer Knöpfe verarbeiten.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Ana

BeitragDi, Apr 20, 2010 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja wahrscheinlich das einfachst, eigentlich wollte ich es anders lösen um sich den aufwand zu sparen das alles dann nochmal durchlaufend zulassen und zu überprüfen.
 

Omenaton_2

BeitragMi, Apr 21, 2010 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Da reicht auch ein DIM.

Weise einfach allen deinen Buttons eine ID-Nummer zu.
Ok = 1, Cancel = 2, Close = 3, Continue = 4, etc.

Dann definierst du vorne 2 DIMs :
Dim SoundBedingung_A(4)
Dim SoundBedingung_B(4)

Dann,
If SoundBedingung_A(x) = True And SoundBedingung_B(x) = True Then
abspielen
EndIf

Du könntest das auch einfach in eine For Nest Schleife legen und alle Buttons durchgehen, wobei dann X die Nummerierung in For Next ist.
; X ist die ID-Nummer des aktuell behandelten Buttons.

Ich finde das schön kurz und übersichtlich und leicht erweiterbar.
Außerdem vergiß nicht, daß du auch die Grafiken in DIMs packen kannst, dann kann alles mit einer ID-Nummer angesprochen werden. Allerdings wenn du viele verschiedene Sachen hast, dann lohnt es sich schon einen Type machen.

mpmxyz

BeitragMi, Apr 21, 2010 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Dem kann ich nicht so ganz zustimmen.
Am Anfang scheinen Dim-Arrays zwar leichter zu sein, bei Types verringert man aber den nötigen Aufwand der Programmierung und kapselt auch ein bischen besser.
Bei GUI-Elementen weiß man nicht immer von Anfang an, wie viele man braucht, weshalb es besser ist, Types zu nutzen. Dann muss man nämlich nicht wegen dem Hinzufügen eines Buttons die Arraygröße kontrollieren.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group