2010-10-03 17 views

Répondre

1

tiré de ce site: http://www.mactech.com/articles/mactech/Vol.21/21.08/Threads/index.html

Si le film est très grande, cette méthode pourrait prendre un certain temps pour terminer. Pendant ce temps, l'utilisateur serait incapable de faire quoi que ce soit avec l'application, sauf déplacer les fenêtres autour. Pas très excitant.

Une solution légèrement meilleure implique l'utilisation du film: shouldContinueOperation: withPhase: atPercent: withAttributes: méthode delegate. Ceci est une enveloppe autour de la fonction de progression de film de QuickTime, qui sera utilisée pour afficher une boîte de dialogue montrant la progression de l'exportation et permettre à l'utilisateur d'annuler l'opération. essayer ici cette

- (BOOL)movie:(QTMovie *)movie 
     shouldContinueOperation:(NSString *)op 
     withPhase:(QTMovieOperationPhase)phase 
     atPercent:(NSNumber *)percent 
     withAttributes:(NSDictionary *)attributes 
{ 
    OSErr err = noErr; 
    NSEvent *event; 
    double percentDone = [percent doubleValue] * 100.0; 

    switch (phase) { 
     case QTMovieOperationBeginPhase: 
     // set up the progress panel 
     [progressText setStringValue:op]; 
     [progressBar setDoubleValue:0]; 

     // show the progress sheet 
     [NSApp beginSheet:progressPanel 
      modalForWindow:[movieView window] modalDelegate:nil 
      didEndSelector:nil contextInfo:nil]; 
     break; 
     case QTMovieOperationUpdatePercentPhase: 
     // update the percent done 
     [progressBar setDoubleValue:percentDone]; 
     [progressBar display]; 
     break; 
     case QTMovieOperationEndPhase: 
     [NSApp endSheet:progressPanel]; 
     [progressPanel close]; 
     break; 
    } 

    // cancel (if requested) 
    event = [progressPanel 
     nextEventMatchingMask:NSLeftMouseUpMask 
     untilDate:[NSDate distantPast] 
     inMode:NSDefaultRunLoopMode dequeue:YES]; 
    if (event && NSPointInRect([event locationInWindow], 
              [cancelButton frame])) { 
     [cancelButton performClick:self]; 
     err = userCanceledErr; 
    } 

    return (err == noErr); 
} 

Hope this helps.

Si vous avez besoin d'aide, faites-le moi savoir. laissez-moi savoir si cela a aidé un ptit.

PK