ScreenSaverView - Comportement bizarre
Bonsoir,
J'ai eu la petite idée de faire un screen saver qui permettrait de lire un fichier swf (animation flash). Le plus simple étant d'inclure une webView..
Le problème est que lors de la preview (via les préférences d'économiseurs d'écran), j'arrive à lire l'animation (même quand je clique sur le bouton "tester"). Mais quand je laisse mon ordinateur jusqu'à la marche de l'économiseur ou bien que je vais sur un coin de mon écran pour l'activer, l'animation n'est pas lue...
(PrefsC = PreferencesController (NSWindowController))
Apparemment le problème ne vient pas du code. Il est peut-être mal placé mais la récupération de l'URL est correcte étant donné qu'il arrive à le lire en preview.
J'ai eu la petite idée de faire un screen saver qui permettrait de lire un fichier swf (animation flash). Le plus simple étant d'inclure une webView..
Le problème est que lors de la preview (via les préférences d'économiseurs d'écran), j'arrive à lire l'animation (même quand je clique sur le bouton "tester"). Mais quand je laisse mon ordinateur jusqu'à la marche de l'économiseur ou bien que je vais sur un coin de mon écran pour l'activer, l'animation n'est pas lue...
<br />- (void)startAnimation<br />{<br /> webView = [[[WebView alloc] initWithFrame:[self frame] frameName:@"webView" groupName:nil] retain];<br /> [self replaceSubview:view with:webView];<br /><br /> [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[prefsC fileURL]]];<br /> <br /> [super startAnimation];<br />}<br />
(PrefsC = PreferencesController (NSWindowController))
Apparemment le problème ne vient pas du code. Il est peut-être mal placé mais la récupération de l'URL est correcte étant donné qu'il arrive à le lire en preview.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai essayé de faire excatement la même chose que toi http://www.objective-cocoa.org/forum/index.php?topic=1889.0 mais moi je n'y connais rien en flash.
Tu fais comment pour charger l'animation dans une WebView ?
+
Chacha
[tt][self replaceSubview:view with:webView];[/tt]
A quoi correspond le NSView view ?
.
@Chacha : pour charger l'animation dans une webView, t'as le code juste au dessus.
[prefsC fileURL] retourne évidemment une NSURL initialisé de la sorte :
Moi, je fais comme ça (et ça marche) :
.
Si je me place dans un coin de l'écran pour activer l'économiseur, ça ne charge rien du tout
A tout hasard, je te joins mon projet de test pour que tu vois chez toi !
.
[Fichier joint supprimé par l'administrateur]
Normalement il y a un fichier "lol.swf" par défaut mais je l'ai viré car ça alourdi le ZIP.
Donc il ne faudra pas tenir compte de la key "default" de NSUserDefaults.
[Fichier joint supprimé par l'administrateur]
- ta gestion des préférences est inadaptée.
- la présence d'un windowContrôleur pour gérer les prefs est assez lourde.
Je te renvoie ton projet corrigé selon les guidelines Apples.
A tester !
.
[Fichier joint supprimé par l'administrateur]
Non non, moi je parlais du code HTML qui embarque le flash... Il faut mettre quoi au juste ?
+
Chacha
Merci bru, en fait c'est mon premier screen saver et j'ai pas regardé la doc Apple j'ai fait avec mes connaissances
La webview en haut à droite ?
C'est juste une erreur de gros débutant que je suis !
Remplace dans initWithFrame:isPreview: :
[tt]webview=WebView alloc] initWithFrame:[self frame;[/tt] par
[tt]webview=WebView alloc] initWithFrame:[self bounds;[/tt]
Quant à la fenêtre des préférences : vérifie les connexions dans le nib. La fenêtre doit être connectée à l'outlet configureSheet. D'autre part, par quelques NSLog, vérifie que loadNibNamed:owner dans la méthode configureSheet renvoie bien un NSWindow...
.
je ne vois pas où tu charges "configureSheet".
Ce nib est chargé en mémoire par [NSBundle loadNibNamed:@Preferences owner:self], ce qui charge la fenêtre. Le owner est l'objet screen-saver lui même, ce qui permet de connecter les IBOutlet et IBAction du .h aux objets du nib.
Note que chez moi, la fenêtre s'affiche correctement.
.
Problème réglé
La bonne animation est chargée lorsque je fais une preview ou que je clique sur "tester", mais lorsque je l'active via un coin de l'écran, il me charge l'animation par défaut..