Frage

Ich mache eine App für Kinder im Vorschulalter mit mehreren Mini-Spielen. Einer von ihnen geht es um „was falsch ist“ im Bild zu finden. wenn sie zum Beispiel drücken Sie das Kinderspiel auf der Straße, ein pling klingt, ist das Kind die Straße bewegt, und ein Etikett wird aktualisiert, um „1/5 Fehler gefunden“. Wenn sie sie alle finden, bewegen sie sich mit neuen Verkehrs Fehler zu einem neuen Viewcontroller auf.

Alles funktioniert ganz gut ... die meiste Zeit. Aber jeder einmal in eine Weile die App spielt die pling, und dann friert. Ich denke, es hat mit dem eigentlichen Spielen des Tons (mit AVAudioPlayer), zu tun, weil, wenn ich das aus kommentieren, es zu Funktion jedes Mal scheint.

Die Funktion, die aufgerufen wird, wenn ein Fehler gefunden wird, ist dies:

-(void)fantKnapp{

    NSLog(@"fant en knapp");
    int ant =[self.antall intValue];
    ant++;
    NSLog(@"antall %i",ant);
    self.antall=[NSNumber numberWithInt:ant];
    self.poeng.text=[NSString stringWithFormat: @"%i/5 funnet",ant];

    if(ant==5){
        NSLog(@"Du klarte alle!");
        klartAlleView.hidden=NO;
        spillIgjen.hidden=NO;
        nestebrettKnapp.hidden=NO;
        navtestAppDelegate *appDelegate=(navtestAppDelegate *)[[UIApplication sharedApplication] delegate];
        [appDelegate spillLyd:@"du_klarte_alle"];
    }
    else{
        navtestAppDelegate *appDelegate=(navtestAppDelegate *)[[UIApplication sharedApplication] delegate];
        [appDelegate spillLyd:@"cling_1"];
    }
}

Diese Codes findet „Antall“, die aktuelle Anzahl der gefundenen Fehler (Punkte). Wenn alle Fehler (funktioniert diese immer) ein bestimmte Ton gespielt wird gefunden. Wenn nicht ein anderer Ton spielt. Dies erfolgt durch eine Funktion in der AppDelegate Datei aufgerufen wird.

-(void)spillLyd:(NSString*) filnavn{
    NSString *audioFilePath=[[NSBundle mainBundle] pathForResource:filnavn ofType:@"aif"];
    NSURL *audioFileURL=[NSURL fileURLWithPath:audioFilePath];
    self.lydspiller=[[[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:nil] autorelease];
    [self.lydspiller prepareToPlay];
    [self.lydspiller play];
    NSLog(@"spiller lyden");
}

Dies funktioniert gut in 49/50 Fällen, aber jeder einmal in eine Weile funktioniert es nicht. Das Komische ist, dass der Ton spielt, aber die App eingefroren, und das Etikett wird nicht aktualisiert (self.poeng.text = ...). Aber alle NSLog Kommentare angezeigt, einschließlich der neuen Anzahl von Punkten. Ich würde erwarten, dass dies geschehen, bevor der Ton gespielt wird ...

Ist das ein Problem mit dem AVAudioPlayer? Hat jemand ähnliche Erfahrungen gemacht? Kann mir jemand helfen auf diese aus? Ich bin dankbar für jede Hilfe oder Anregungen ...

(Und traurig über die norwegischen. Wahrscheinlich tut es nicht leichter, mir zu helfen ...)

Keine korrekte Lösung

Andere Tipps

Sie müssen wahrscheinlich die AVAudioPlayerDelegate Methoden implementieren, so dass Sie zu stoppen Fehler aus dem Spieler versuchen können. Wenn die Delegierten berichten, dass der Spieler erfolgreich, obwohl die App gefriert abgeschlossen, dann ist der Fehler höchstwahrscheinlich nicht mit dem Spieler zusammen.

Ich fühle mich für Sie. Nur wenige Debugging Aufgabe ist frustrierender als ein bestimmten, aber sehr intermittierenden Fehler aufzuspüren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top