Forum: SDL, ljudeffekter i vvector?

Forum huvudsida -> Programmering -> SDL, ljudeffekter i vvector?

Sidor: 1

Till botten

NetNinja 18:20 - 20:e Februari 2007 | Post #1
Medlem
Inlägg: 116


Skicka PM
Hej, jag igen. Jag försöker göra så att man ska kunna lägga till flera soundeffects när man kodar.

vector<Mix_Chunk> effect;

Kan någon förklara varför det här inte funkar och om det inte är möjligt att göra så tipsa om hur man kan göra annars. Redan försökt göra en klass med en Mix_Chunk variabel som privat medlem, men det funkade inte heller.

Vad ska jag göra?

-------------------------





Slash 21:42 - 20:e Februari 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
Nu vet jag inte precis vad som blev fel för dig (antar kompileringsfel). I alla fall, provade att kompilera, och det fungerade utmärkt för mig:

  1.  
  2. #include <vector>
  3.  
  4. // Har inte SDL, men det ska tydligen se ut så här:
  5. typedef struct {
  6. int allocated;
  7. unsigned char *abuf;
  8. unsigned int alen;
  9. unsigned char volume;
  10. } Mix_Chunk;
  11.  
  12. int main()
  13. {
  14. std::vector<Mix_Chunk> snds;
  15. return 0;
  16. }


Du kan ju se om det är något du missat (kan ju vara någon SDL-header du missat också).

-------------------------
Ingen sigantur!



NetNinja 09:03 - 21:a Februari 2007 | Post #3
Medlem
Inlägg: 116


Skicka PM
När man använder vector<Mix_Chunk*> effect;
så kompilerar den, men den vill inte spela upp ddet sen... Ska testa lite till.

Edit:
Verkar som om jag gör fel när jag försöker spela upp det.
Jag försöker använda:
  1. if( Mix_PlayChannel( -1, effect.at(k), 0 ) == -1 )
  2. cout<<"Unable to play sound";


-------------------------



Senast redigerad 09:20 - 21:a Februari 2007


Nissebosselasse 10:39 - 21:a Februari 2007 | Post #4
Medlem
Inlägg: 490


Skicka PM
För det första, vilka felmeddelande fick du när du försökte använda vector<Mix_Chunk>? För annars säger jag som slash; om du inkluderat rätt headerfiler, så ska det fungera.
Tänk dock på att om du sparar ner hela objekt (vector<Mix_Chunk> istället för vector<Mix_Chunk *>), så måste du skicka med adressen till strukturen när du använder Mix_PlayChannel (se här).


-------------------------
http://pushingcows.se
Gula Nallen



NetNinja 14:43 - 21:a Februari 2007 | Post #5
Medlem
Inlägg: 116


Skicka PM
Om jag använder vector<Mix_Chunk> så blir det felmedelandet: cannot convert parameter 1 from 'Mix_Chunk *' to 'const Mix_Chunk &'

Det syftar på när jag försöker push_backa den, och sen en gång till när jag försöker spela den.

-------------------------





Nissebosselasse 17:29 - 21:a Februari 2007 | Post #6
Medlem
Inlägg: 490


Skicka PM
Visa din kod där du lägger en Mix_Chunk i vektorn (du kanske skickar med const Mix_Chunk & som parameter i en funktion, och försöker lägga till den där?).

-------------------------
http://pushingcows.se
Gula Nallen



Slash 18:40 - 21:a Februari 2007 | Post #7
Medlem
Inlägg: 141


Skicka PM
    Citat av NetNinja:
Om jag använder vector<Mix_Chunk> så blir det felmedelandet: cannot convert parameter 1 from 'Mix_Chunk *' to 'const Mix_Chunk &'

Det syftar på när jag försöker push_backa den, och sen en gång till när jag försöker spela den.


Det är för att för en vector<Mix_Chunk> så tar push_back en const Mix_Chunk& men du försöker skicka in en pekare till en Mix_Chunk. Antingen får du avreferensera pekaren eller helt enkelt spara pekare till Mix_Chunk:s i vektorn istället (som du verkar göra nu).



-------------------------
Ingen sigantur!



NetNinja 12:37 - 24:e Februari 2007 | Post #8
Medlem
Inlägg: 116


Skicka PM
  1. void addsound(char name[])
  2. {
  3. Mix_Chunk *temp = NULL;
  4. temp=Mix_LoadWAV(name);
  5. if(temp=NULL)
  6. cout<<"Couldn't load file";
  7. else
  8. effect.push_back(temp);
  9. }


Var typ så dom gjorde i tutorialen, fast då la dom inte in den i en vector förstås.

EDIT:
Hittade felet hade gjort =Null istället för ==Null

-------------------------



Senast redigerad 20:44 - 14:e Mars 2007


Sidor: 1

Forum huvudsida -> Programmering -> SDL, ljudeffekter i vvector?
Atom feed

Du får inte posta i den här tråden | Till toppen