|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
BUG AUDIO !!! Forse più dii uno...
Provate questo codice:
Codice:
package it.diamonds;
import it.diamonds.engine.audio.*;
public class ProvaSound
{
public static void SleepOneSecond()
{
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
/* Nothing to do here */
}
}
/**
* @param args
*/
public static void main(String[] args)
{
Audio audio = new Audio();
Sound sound1 = new Sound("diamond");
Sound sound2 = new Sound("diamond");
Sound sound3 = new Sound("diamond");
sound1.play();
SleepOneSecond();
sound2.play();
SleepOneSecond();
sound3.play();
SleepOneSecond();
sound2.play();
SleepOneSecond();
sound1.play();
SleepOneSecond();
}
Un altro bug... In pratica se il suono viene riprodotto una prima volta, la seconda non viene riprodotto... In particolare mi riferisco al suono della gemma che tocca il fondo... Codice:
public void play()
{
if(!testing)
{
AL10.alSourcePlay(source);
}
wasPlayed = true;
}
Potete vederlo facilmente facendo arrivare in fondo (in colonne diverse) due gemme... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ehm...
a me capita che se faccio cadere la gemma la prima non produce il suono mentre la seconda si....
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Hmmm... e' un problema della libreria?
O piu' facilmente stiamo facendo noi qualcosa di sbagliato? Nell'ordine inverso: prima assicuriamoci di pilotare la libreria in maniera corretta e poi, quando siamo sicuri che il problema non e' nostro, ricontrolliamo che stiamo pilotando la libreria in maniera corretta. E poi, concludiamo che il problema e' loro.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ho risolto il problema, ma non ho capito il perchè si presentava...
Modificando GemFactory da così: Codice:
package it.diamonds;
import it.diamonds.engine.audio.Sound;
public class GemFactory
{
public GemFactory()
{
}
public Gem create()
{
Gem gem = new Gem("diamond");
gem.setCollisionSound(new Sound("diamond"));
return gem;
}
}
Codice:
package it.diamonds;
import it.diamonds.engine.audio.Sound;
public class GemFactory
{
Sound sound;
public GemFactory()
{
sound = new Sound("diamond");
}
public Gem create()
{
Gem gem = new Gem("diamond");
gem.setCollisionSound(sound);
return gem;
}
}
Comuqnue il problema di fondo rimane... Come mai la prima soluzione non funzionava ? Ultima modifica di cionci : 17-11-2005 alle 15:17. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sono riuscito a riprodurre il problema (ovvviamente con la prima versione di GemFactory):
Codice:
public static void main(String[] args)
{
Audio audio = new Audio();
GemFactory gemFactory = new GemFactory();
Gem gem = gemFactory.create();
gem.drop();
SleepOneSecond();
gem = gemFactory.create();
gem.drop();
SleepOneSecond();
gem = gemFactory.create();
gem.drop();
SleepOneSecond();
gem = gemFactory.create();
gem.drop();
SleepOneSecond();
gem = gemFactory.create();
gem.drop();
SleepOneSecond();
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
C:\cruisecontrol-2.3.0.1\work\checkout\diamonds\trunk\src\it\diamonds\GemFactory.java:7:11: Variable 'sound' must be private and have accessor methods.
Lanciate lo script di build sempre e comunque prima del commit.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai ragione
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E che kaiser... Devo riportare il tutto alla prima versione... Altrimenti nella copia di GemFactory all'interno di GemFactoryForTesting si cerca di allocare un Sound e di conseguenza non essendo l'audio inizializzato falliscono praticaemnte tutti i test...
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ho fatto così, altrimenti la copia di GemFactory in GemFactoryForTesting inizializzava un sound e creava un'eccezione...ovviamente è passibile di refactoring...
Codice:
package it.diamonds;
import it.diamonds.engine.audio.Sound;
public class GemFactory
{
private Sound sound = null;
public GemFactory()
{
}
public Gem create()
{
if(sound == null)
{
sound = new Sound("diamond");
}
Gem gem = new Gem("diamond");
gem.setCollisionSound(sound);
return gem;
}
}
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Puoi postare il codice di GemFactoryForTesting?
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
package it.diamonds;
public class GemFactoryForTesting extends GemFactory
{
public GemFactoryForTesting()
{
}
public Gem create()
{
return Gem.createForTesting();
}
}
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Eredita strettamente sempre e solo per modellare relazioni "is a" che soddisfano il principio di sostituzione. GemFactory dev'essere solo un'interfaccia, con due implementazioni: - GameGemFactory - GemFactoryForTesting E non c'e' bisogno di alcun hack, perche' il tuo problema sparisce da solo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ehm...io te lo avevo chiesto su MSN se dovevo fare l'interfaccia... Probabilmente ho capito male quello che mi hai detto
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
|
Comunque è necessario fare anche un discorso relativo all'hardware. Cioè, così come per l'OpenGL, anche la scheda audio del PC deve supportare OpenAL e a dire la verità al riguardo non sono molto esperto. In ogni caso, prima di parlare di bug della libreria (decisamente improbabile visto che OpenAL è usato in Quake 4, UT2004 ed in innumerevoli titoli), sarebbe il caso di verificare il funzionamento di OpenAL con il codice dei tutorial che, teoricamente, dovrebbe essere corretto.
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora si fa così... Per ora lascio il codice con il bug (aggiorno comunque aggiungendo l'interfaccia)...così almeno tutti lo possono testare...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:51.



















