McAffey Temat założony przez niniejszego użytkownika |
[allegro] puszczenie dźwięku i wyjście z pętli » 2011-03-25 22:21:46 Witam. Wiecie może jak w allegro (4.4) zrobić aby po wywołaniu funkcji play_sample można było wyjść z pętli a dźwięk by leciał dalej ? Tzn jak zrobię np : if( mb == 1 ) play_sample( dzwiek, 150, 100, 1000, 0 ); to jak wcisnę lewy myszy to dźwięk leci, ale oczywiście od razu po puszczeniu przycisku jest urywany (obojętnie w którym jest momencie dźwięku). A znacie może jakiś sposób, aby funkcją (niekoniecznie tą) puszczenie dźwięku tylko wywołać a potem niech się dzieje co chce ? Tzn tak, żeby zawsze dźwięk był puszczany do końca nawet jak (w tym przypadku) odciśniemy już lewy myszy. I dostosowywanie timera do długości dźwięku raczej nie wchodzi w grę ;P Z góry dziękuję i pozdrawiam ;) |
|
DejaVu |
» 2011-03-25 22:22:58 Zapewne coś masz skopane w kodzie - jedna linijka tu nic nie pomoże. |
|
szyx_yankez |
» 2011-03-25 22:25:45 Np. stwórz sobie drugi wątek, i w tym drugim uruchom funkcje do odtwarzania dźwięku. |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2011-03-25 22:43:22 Zapewne coś masz skopane w kodzie |
Mi się wydaje, że to nie jest żaden błąd, po prostu dźwięk gra tylko gdy funkcja chodzi. Np. stwórz sobie drugi wątek, i w tym drugim uruchom funkcje do odtwarzania dźwięku. |
Kod który napisałem w pierwszy poście to był tylko przykład, prawdziwy kod jest troszkę (:P) bardziej skomplikowany. I najgorsze jest to, że program przechodzi do następnej linijki (tak mi się wydaje) jeszcze zanim skończy granie, czyli jeśli granie bym wziął w pętlę if( odegrane == false ) a po odegraniu wstawił odegrane = true; to dźwięk byłby grany tylko przez niewychwytywalny ludzkim uchem ułamek sekundy. W związku z tym jedyne co mi na razie przychodzi na myśl to odpowiedni timer, ale raczej mi się to nie uśmiecha. Naprawdę 0 pomysłów ? |
|
DejaVu |
» 2011-03-25 23:02:31 |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2011-03-25 23:13:43 No dobrze, ale co wynika z tej lekcji dla mojego problemu ;] Przeczytałem całą i nie wniosła ona niczego nowego do mojej wiedzy (po za tym, że ustawienie jednego argumentu na 127 daje równowagę dla głośników, ale nie ma to związku z moim problemem). |
|
DejaVu |
» 2011-03-25 23:27:19 Napisz prosty kod na podstawie tutoriala, i udowodnij, że nie działa :) Z kursu wynika, że wywoływana jest funkcja play_sample przed pętlą, więc dźwięk gra sobie w tle. |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2011-03-25 23:37:55 Tak, ale nie gra po wyjściu z ifa (nie dokańcza się granie do końca dźwięku). A ja go potrzebuję w sytuacji która podczas trwania programu dla danej wartości występuje tylko raz. Czyli jakoś go muszę zaifować (albo rozwiązać to w jakiś inny sposób) żeby gdy drugi raz wywołam tą samą sytuację dla tych samych wartości już dźwięk się nie odtworzył. Zobaczę jutro (bo na dziś się już pożegnałem z kodem) czy uda mi się odseparować fragment kodu o którym mowa i podzielić się nim tutaj ;) |
|
« 1 » 2 |