BASIC

Author Topic: Sound nur einmal wiedergeben.  (Read 5185 times)

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Sound nur einmal wiedergeben.
« on: 2014-Oct-30 »
Hallo Leute, wie bewerkstellige ich es am besten das wenn ich über eine Karte fahre der Sound pro Ziel nur einmal abgespielt wird.
Immer wenn ich auf dem Ziel bleibe gib's eine Schleife und der Sound wird bis zum erbrechen wiedergegeben.
Mit einem Schalter (TRUE / FALSE oder ähnlich) habe ich schon gebastelt, aber nicht so wie ich wollte.
Hat jemand einen Idee für einen "Alten Eingerosteten"? (Cooler Screenname fällt mir gerade auf)    ;)

PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4174
    • View Profile
    • Portfolio
Re: Sound nur einmal wiedergeben.
« Reply #1 on: 2014-Oct-30 »
I´m not sure I understand (translator did a poor job here).

It seems to me you have a need for a sound to play when target is reached and you want it to play only once, not repeted.

You can do it by adding a check variable, or, checking the last position, for example (the later):

if ´last position´ is outside target area and ´current position´ is inside target area
 play sound
endif

This way, sound will only be played once you reach the target and not while you stay in target.
I hope this approach helps, depending on your actual need, there may be better ways to do the same thing.

Cheers.

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #2 on: 2014-Oct-30 »
Danke erstmal, aber wenn die Maus auf dem Ziel bleibt, wird der Sound immer abgespielt, eine Endlosschleife. Aber die möchte ich gerne verhindern.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #3 on: 2014-Oct-30 »
Du musst triggern,
wenn die Maus über der Karte ist spiele den Sound...

Ist die Maus weiterhin auf der Karte unterbreche die Abfrage ( BREAK)
denn der Sound wurde ja schon gespielt und es ist ja die gleiche Karte.

Bis du über einen anderen Karte und der Sound der anderne Karte ist noch aktiv BREAK die schleife...

Erst wenn der Sound aus ist und du gehst auf eine neue Karte oder bist schon drauf musst du den Sound wieder abspielen.


Eigentlich recht simpel
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #4 on: 2014-Oct-30 »
Hmm, entweder kann ich dir nicht folgen oder ich habe mich falsch ausgedrückt.

Also Abfrage:


WHILE TRUE

IF Position der Maus = xxx THEN

   GOSUB Sound()

ENDIF

WEND


FUNCTION Sound:

  PLAYSOUND(0,1,1)

ENDFUNCTION

Also immer wenn IF stimmt spielt's den Sound. Bleibt die Maus auf der Position das IF stimmt läuft die Schleife. Es soll aber nur 1x der Sound kommen
auch wenn IF immer noch stimmt. Beispiel Sternenkarte: Immer wenn ein Planet mit der Maus übergangen wird gibt es einen Ton, nur einmal. Beim nächsten Planeten
wieder einen. Komme ich zurück zu dem ersten gibts es natürlich wieder einen. Der Sound ist ja nur ein kleines Beep oder so. Also keine Musik oder ähnliches.



« Last Edit: 2014-Oct-30 by Worebu »
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Marmor

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 908
  • 96A285CC
    • View Profile
    • my youtube channel
Re: Sound nur einmal wiedergeben.
« Reply #5 on: 2014-Oct-30 »
if mouse xxx then
if soundwurdegespielt = 0 then
soundwurdegespielt =1

playsound sound
endif
endif

if mouse <> xxx then soundwurdegespielt = 0

(pseudocode)



Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4174
    • View Profile
    • Portfolio
Re: Sound nur einmal wiedergeben.
« Reply #6 on: 2014-Oct-31 »
Danke erstmal, aber wenn die Maus auf dem Ziel bleibt, wird der Sound immer abgespielt, eine Endlosschleife. Aber die möchte ich gerne verhindern.

No, if the mouse remains over the target, it won´t play the sound again because your conditional to play it only holds true if the xy coordinates of previous position was outside the target, so in the next loop, the last coordinates will be inside the target and it won´t play again.

Maybe I did not express myself correctly, if that is the case, I can write a pseudo code to illustrate it.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #7 on: 2014-Oct-31 »
Ich mach dir heute Nachmittag ein Beispiel wenn ich zuhause bin.
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #8 on: 2014-Oct-31 »
Ja bitte, wenn ich die Maus auf der Position lasse gibs doch eine Schleife oder?.
Ich habe mal ein Video einer kleinen Karte abgestellt, Quasi eine Bastelkarte.


@Marmor: Dein Beispiel funktioniert leider nicht , ich komme immer wieder in die Schleife
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #9 on: 2014-Nov-06 »
@SchranzOr, hast Du mal was gebastelt? Ich bekomme es nicht hin. Ich bin jedesmal in einer Schleife.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #10 on: 2014-Nov-07 »
Shit, vergessen.. :/

Mach ich sobald ich daheim bin, sry!
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1061
    • View Profile
    • http://www.deuteriumoxid.com
Re: Sound nur einmal wiedergeben.
« Reply #11 on: 2014-Nov-07 »
Hallo Worebu,
sollte so funktionieren.

Code: GLBasic [Select]
 SETCURRENTDIR("Media") // go to media files
 SYSTEMPOINTER TRUE
 GLOBAL mx,my,b1,b2  /// Mausvariablen

 GLOBAL snd_check = FALSE       // kontroller ob sound abgespielt werden darf
 GLOBAL pos_check = FALSE               // Kontroller ob sich die maus über dem objekt befindet

LOADSOUND "1.wav",0 ,1



WHILE TRUE
// Mausposition abfragen
        MOUSESTATE mx,my,b1,b2
       
        //Ein rechteck zeichnen ;)
        DRAWRECT 50,50,60,60,RGB(0x00, 0x80, 0xff)
       
        // Wenn die Mausposition in dem Rechteck ist
                IF  mx > 50 AND mx < 110 AND my > 50 AND my < 110  
                                        pos_check = TRUE        // Position ist wahr
                                 ELSE
                                        pos_check = FALSE       // wenn nicht dann ist die Position falsch
                                        snd_check = FALSE       // genauso den Soundcheck auf Falsch setzen(zurücksetzen)
                ENDIF
               
                // ist also die Mausposition Wahr und der Sound wurde noch nicht abgespielt
                IF  pos_check = TRUE AND snd_check = FALSE
                                        PLAYSOUND(0, 0,1)       // Sound abspielen
                                        snd_check = TRUE                // Sound wurde abgespielt
                ENDIF

               



SHOWSCREEN
WEND
END
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #12 on: 2014-Nov-07 »
Suuuper, Danke funzt. Habe ich mir mal geklaut.

@SchranzOr, trotzdem danke für deine Mühe im Vorfeld.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #13 on: 2014-Nov-07 »
Sry das ich zu spät war... :'(



 :good: :booze:
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Sound nur einmal wiedergeben.
« Reply #14 on: 2014-Nov-07 »
Hallo, macht nichts. Allerdings nun die Ernüchterung. Wenn ich auf meiner Karte mehr Punkte habe (ca. 16) funktioniert es nicht mehr. Habe alles bis auf 1 Punkt rausgenommen funzt. Wenn ich einen zweiten Punkt mit reinnehme passiert nichts. Der zweite Punkt geht dann in eine Schleife obwohl er Programmtechnisch identisch ist (bis auf die koordinaten).  :rant:
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü