Les fonds souverains Firefox auto ne joue pas avec wmode réglé transpa pas

  • Carl
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Juil 20, 2004
  • Messages: 50
  • Status: Offline

Message Mai 13th, 2010, 3:05 pm

Bonjour,

Im effectivement avoir deux problèmes, mais un seul d'entre eux est lié Flash. Donc, voici la question Flash liées. Il me semble avoir de la difficulté assez grave se Firefox pour lire les animations Flash lorsque wmode est défini sur «opaque» ou «transpa pas." Mais commençons par le commencement...

1. Im en utilisant Flash 10.0.2.
2. ActionScript 3.0
3. Im essayant de publier à la fois pour 9 Flash et Flash 10. Il n'a pas vraiment qui, bien que depuis le comportement est le même.

Quoi qu'il en soit, j'ai un menu déroulant qui a besoin d'afficher une animation Flash ci-dessus introduction. Alors, naturellement, j'ai besoin de mettre à wmode "opaque" ou "transpa pas." Sinon, ils finissent derrière le fichier incorporé. Le SWF joue parfaitement bien quand je wmode à "fenêtre. "Toutefois, dès que je l'ai réglé sur" opaque "ou" transpa pas, "je dois cliquer droit sur le fichier SWF intégré et cliquez sur Play pour le faire jouer. Il pourra parfois jouer la première fois que je charge la page après compensation ma mémoire cache des navigateurs. Mais même cela n'est pas cohérent. Il fonctionne parfaitement bien dans IE7, IE8 et Opera 10.53.

J'ai un chargeur de classes qui affiche un «Chargement..." Message et un indicateur de progression qui est appelée en premier. Une fois le fichier chargé, le reste de la lecture du film. Je sais que mon animation Flash fonctionne comme ce problème seulement se produit lorsque je me mis à wmode "opaque" ou "transpa pas." Id post un lien vers une version de travail de cette appare notly mais Im pas autorisé à poster des liens.

Malheureusement, se débarrasser de Flash n'est pas une option que son besoin de deux grandes sections du site. Ive a passé la meilleure partie de la journée à essayer de résoudre ce problème et rien n'a fonctionné. Peut-être Im manque quelque chose d'assez évident, mais Ive été à elle pendant un bon moment et une nouvelle paire d'yeux serait grandement apprécié.

Im en utilisant SWFObject pour intégrer le fichier SWF:
Code: [ Select ]
<script type="text/javascript" src="/scripts/core/swfobject.js"></script>

<script type="text/javascript">
  var flashvars = {
    bgcolor: "#FFFFFF"
  };
  var params = {
    menu: "true",
    loop: "false",
    wmode: "transparent"
  };
  swfobject.embedSWF("/flash/WelcomeMovie.swf", "intro-movie", "600", "310", "10.0.45", "/flash/expressInstall.swf", flashvars, params);
</script>
  1. <script type="text/javascript" src="/scripts/core/swfobject.js"></script>
  2. <script type="text/javascript">
  3.   var flashvars = {
  4.     bgcolor: "#FFFFFF"
  5.   };
  6.   var params = {
  7.     menu: "true",
  8.     loop: "false",
  9.     wmode: "transparent"
  10.   };
  11.   swfobject.embedSWF("/flash/WelcomeMovie.swf", "intro-movie", "600", "310", "10.0.45", "/flash/expressInstall.swf", flashvars, params);
  12. </script>

Code: [ Select ]
<div id="intro-movie">
  <p>
    Other content goes here
  </p>
</div>
  1. <div id="intro-movie">
  2.   <p>
  3.     Other content goes here
  4.   </p>
  5. </div>


Dans le cas de ses utiles, heres mon chargeur de classes et comment Im en utilisant:

Code: [ Select ]
package heliac.core
{
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.display.LoaderInfo;
    import flash.text.TextField;
    import flash.display.MovieClip;

    public class mainLoader
    {
        protected var mainStage:Object;
        protected var loadingText:TextField;
        protected var loadingBar:MovieClip;
        protected var stopFrame:int;
        
        public function mainLoader(currentStage:Object, newLoadingText:TextField,
                                  newLoadingBar:MovieClip, newStopFrame:int)
        {
            this.mainStage = currentStage;
            this.loadingText = newLoadingText;
            this.loadingBar = newLoadingBar;
            this.stopFrame = newStopFrame;
            
            this.mainStage.stop();
            this.mainStage.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
            this.mainStage.loaderInfo.addEventListener(Event.COMPLETE, completeListener);
        }
        
        protected function progressListener(e:ProgressEvent):void
        {
            var loaded:Number = e.bytesLoaded / e.bytesTotal;
            var percent:int = loaded * 100;
        
            var loading:String = "";
            
            if (this.mainStage.loaderInfo.parameters.loading != null)
            {
                loading = unescape(this.mainStage.loaderInfo.parameters.loading);
            }
            else
            {
                loading = "Loading";
            }
        
            this.loadingText.text = loading + ": " + percent + "%";
            this.loadingBar.scaleX = loaded;
        }
        
        protected function completeListener(e:Event):void
        {
            this.mainStage.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressListener);
            this.mainStage.loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
            this.mainStage.gotoAndStop(this.stopFrame);
        }
    }
}
  1. package heliac.core
  2. {
  3.     import flash.events.ProgressEvent;
  4.     import flash.events.Event;
  5.     import flash.display.LoaderInfo;
  6.     import flash.text.TextField;
  7.     import flash.display.MovieClip;
  8.     public class mainLoader
  9.     {
  10.         protected var mainStage:Object;
  11.         protected var loadingText:TextField;
  12.         protected var loadingBar:MovieClip;
  13.         protected var stopFrame:int;
  14.         
  15.         public function mainLoader(currentStage:Object, newLoadingText:TextField,
  16.                                   newLoadingBar:MovieClip, newStopFrame:int)
  17.         {
  18.             this.mainStage = currentStage;
  19.             this.loadingText = newLoadingText;
  20.             this.loadingBar = newLoadingBar;
  21.             this.stopFrame = newStopFrame;
  22.             
  23.             this.mainStage.stop();
  24.             this.mainStage.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
  25.             this.mainStage.loaderInfo.addEventListener(Event.COMPLETE, completeListener);
  26.         }
  27.         
  28.         protected function progressListener(e:ProgressEvent):void
  29.         {
  30.             var loaded:Number = e.bytesLoaded / e.bytesTotal;
  31.             var percent:int = loaded * 100;
  32.         
  33.             var loading:String = "";
  34.             
  35.             if (this.mainStage.loaderInfo.parameters.loading != null)
  36.             {
  37.                 loading = unescape(this.mainStage.loaderInfo.parameters.loading);
  38.             }
  39.             else
  40.             {
  41.                 loading = "Loading";
  42.             }
  43.         
  44.             this.loadingText.text = loading + ": " + percent + "%";
  45.             this.loadingBar.scaleX = loaded;
  46.         }
  47.         
  48.         protected function completeListener(e:Event):void
  49.         {
  50.             this.mainStage.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressListener);
  51.             this.mainStage.loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
  52.             this.mainStage.gotoAndStop(this.stopFrame);
  53.         }
  54.     }
  55. }

Ce qui suit est exécuté sur la première image de mon animation Flash:
Code: [ Select ]
import heliac.core.mainLoader;

var loader:mainLoader = new mainLoader(root, loadingText, loadingBar, 2);
  1. import heliac.core.mainLoader;
  2. var loader:mainLoader = new mainLoader(root, loadingText, loadingBar, 2);

Alors, euh, au secours! Cette question est fou. Merci d'avance!
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 13th, 2010, 3:05 pm

  • Carl
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Juil 20, 2004
  • Messages: 50
  • Status: Offline

Message Mai 13th, 2010, 4:29 pm

Il ne manque jamais. Je poste sur ce forum après les heures de ne pas être en mesure de trouver une solution (soit par le biais de la recherche ou sur le mien) et bien sûr, je trouve une solution possible!

Quelqu'un d'autre semble avoir ce problème et ils semblaient le réduire à l'Event.COMPLETE et des événements de progression ne fonctionne pas comme prévu dans Firefox. Les charges première image et rien ne se passe au-delà à cause des événements n'est pas de tir. Cela est conforme à ce qui Im connaît:

Quote:
J'ai récemment rencontré des problèmes sur quelques sites AS3. Si vous incorporez votre fichier SWF avec différents WMode, comme opaques ou transpa pas dans Firefox Flash ne se charge pas. En fait, le cadre de charges Flash d'abord, puis il semble que cela s'arrête. Eh bien, c'est certainement charges, mais le problème est que loaderInfo Event.COMPLETE et progrès ne sont pas tirés dans Firefox.

C'est LAME! Firefox a cette "avancée" fonction avec Flash, il ne le charge jusqu'à ce que l'onglet du navigateur a le focus. On dirait que nous obtenons problème à partir de là. Quoi qu'il en soit, une solution consiste à définir la fonction qui va vérifier Event.ENTER_FRAME chargeur

Code: [ Select ]
    addEventListener(Event.ENTER_FRAME, _listenLoading);// on enter frame to check if it’s loaded
    private function _listenLoading(e:Event):void {
     if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal) {
      removeEventListener(Event.ENTER_FRAME, _listenLoading);
      _onSiteLoaded();
     }
    }
  1.     addEventListener(Event.ENTER_FRAME, _listenLoading);// on enter frame to check if it’s loaded
  2.     private function _listenLoading(e:Event):void {
  3.      if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal) {
  4.       removeEventListener(Event.ENTER_FRAME, _listenLoading);
  5.       _onSiteLoaded();
  6.      }
  7.     }


Ils ont affiché la solution de contournement ci-dessus mais je n'ai pas encore essayé pour voir si elle résout mon problème.
  • Carl
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Juil 20, 2004
  • Messages: 50
  • Status: Offline

Message Mai 13th, 2010, 9:51 pm

Ok, bonnes nouvelles! J'ai trouvé une solution à cette question. Comme le post ci-dessus suggère, l'événement Event.COMPLETE n'était pas toujours mise à feu dans Firefox. Cependant, la solution ci-dessus ne fonctionne pas. Au moins cela n'a pas fonctionné pour moi. Ne pas écrire hors car il peut résoudre le problème pour toutes les questions que vous pourriez rencontrer.

Une fois que j'ai découvert qu'il avait un problème avec Event.COMPLETE, une rapide recherche sur Google a révélé une autre solution. Cette solution utilise Event.INIT. Un grand Merci sort à un message sur ActionScript <dot> org et un billet de blog sur numiko <dot> com. marguera et Ryan (je crois) sur les sites respectifs obtenir tout le crédit. Vous gars m'a sauvé heures de valeur de débogage. 8)

En fait, j'ai dû ajouter deux lignes de code (4 si l'on compte entre parenthèses). Pour une raison quelconque, n'était pas de tir Event.COMPLETE tout le temps dans Firefox. Je ne pouvais pas reproduire le bug de façon cohérente. Ainsi, l'ajout d'un écouteur d'événements supplémentaires (il faut Event.INIT) est nécessaire pour faire completeListener que () est appelée et les progrès film au-delà de la première image. Pourquoi Event.INIT? La documentation indique que Flash Event.INIT est appelée lorsque:

Quote:
* Toutes les propriétés et méthodes associées à l'objet chargé et ceux associés à l'objet LoaderInfo sont accessibles.
* Les constructeurs de tous les objets enfants ont terminé.

Soi-disant, l'événement init précède toujours l'événement complete mais pour une raison qui n'est pas toujours le cas dans Firefox.

Dans le constructeur de la classe mainLoader, j'ai dû ajouter un écouteur d'événements deuxième completeListener ():
Code: [ Select ]
this.mainStage.loaderInfo.addEventListener(Event.INIT, completeListener);

Et puis dans le completeListener () la fonction, j'ai dû ajouter une vérification pour voir si le fichier fini de charger:
Code: [ Select ]
if (this.mainStage.loaderInfo.bytesLoaded == this.mainStage.loaderInfo.bytesTotal)
{
  // remove event listeners and finish setting up movie
}
  1. if (this.mainStage.loaderInfo.bytesLoaded == this.mainStage.loaderInfo.bytesTotal)
  2. {
  3.   // remove event listeners and finish setting up movie
  4. }


Heres la classe de travail complet:
Code: [ Select ]
package heliac.core
{
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.display.LoaderInfo;
    import flash.text.TextField;
    import flash.display.MovieClip;

    public class mainLoader
    {
        protected var mainStage:Object;
        protected var loadingText:TextField;
        protected var loadingBar:MovieClip;
        protected var stopFrame:int;
        
        public function mainLoader(currentStage:Object, newLoadingText:TextField,
                                  newLoadingBar:MovieClip, newStopFrame:int)
        {
            this.mainStage = currentStage;
            this.loadingText = newLoadingText;
            this.loadingBar = newLoadingBar;
            this.stopFrame = newStopFrame;
            
            this.mainStage.stop();
            this.mainStage.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
            this.mainStage.loaderInfo.addEventListener(Event.INIT, completeListener);
            this.mainStage.loaderInfo.addEventListener(Event.COMPLETE, completeListener);
        }
        
        protected function progressListener(e:ProgressEvent):void
        {
            var loaded:Number = e.bytesLoaded / e.bytesTotal;
            var percent:int = loaded * 100;
        
            var loading:String = "";
            
            if (this.mainStage.loaderInfo.parameters.loading != null)
            {
                loading = unescape(this.mainStage.loaderInfo.parameters.loading);
            }
            else
            {
                loading = "Loading";
            }
        
            this.loadingText.text = loading + ": " + percent + "%";
            this.loadingBar.scaleX = loaded;
        }

        protected function completeListener(e:Event):void
        {
            if (this.mainStage.loaderInfo.bytesLoaded == this.mainStage.loaderInfo.bytesTotal)
            {
                this.mainStage.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressListener);
                this.mainStage.loaderInfo.removeEventListener(Event.INIT, completeListener);
                this.mainStage.loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
                this.mainStage.gotoAndStop(this.stopFrame);
            }
        }
    }
}
  1. package heliac.core
  2. {
  3.     import flash.events.ProgressEvent;
  4.     import flash.events.Event;
  5.     import flash.display.LoaderInfo;
  6.     import flash.text.TextField;
  7.     import flash.display.MovieClip;
  8.     public class mainLoader
  9.     {
  10.         protected var mainStage:Object;
  11.         protected var loadingText:TextField;
  12.         protected var loadingBar:MovieClip;
  13.         protected var stopFrame:int;
  14.         
  15.         public function mainLoader(currentStage:Object, newLoadingText:TextField,
  16.                                   newLoadingBar:MovieClip, newStopFrame:int)
  17.         {
  18.             this.mainStage = currentStage;
  19.             this.loadingText = newLoadingText;
  20.             this.loadingBar = newLoadingBar;
  21.             this.stopFrame = newStopFrame;
  22.             
  23.             this.mainStage.stop();
  24.             this.mainStage.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
  25.             this.mainStage.loaderInfo.addEventListener(Event.INIT, completeListener);
  26.             this.mainStage.loaderInfo.addEventListener(Event.COMPLETE, completeListener);
  27.         }
  28.         
  29.         protected function progressListener(e:ProgressEvent):void
  30.         {
  31.             var loaded:Number = e.bytesLoaded / e.bytesTotal;
  32.             var percent:int = loaded * 100;
  33.         
  34.             var loading:String = "";
  35.             
  36.             if (this.mainStage.loaderInfo.parameters.loading != null)
  37.             {
  38.                 loading = unescape(this.mainStage.loaderInfo.parameters.loading);
  39.             }
  40.             else
  41.             {
  42.                 loading = "Loading";
  43.             }
  44.         
  45.             this.loadingText.text = loading + ": " + percent + "%";
  46.             this.loadingBar.scaleX = loaded;
  47.         }
  48.         protected function completeListener(e:Event):void
  49.         {
  50.             if (this.mainStage.loaderInfo.bytesLoaded == this.mainStage.loaderInfo.bytesTotal)
  51.             {
  52.                 this.mainStage.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressListener);
  53.                 this.mainStage.loaderInfo.removeEventListener(Event.INIT, completeListener);
  54.                 this.mainStage.loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
  55.                 this.mainStage.gotoAndStop(this.stopFrame);
  56.             }
  57.         }
  58.     }
  59. }

Espérons que cela aidera quelqu'un d'autre qui se jette dans cette question.
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Mai 17th, 2010, 3:24 pm

Merci de poster votre solution. Im sûr il n'a pas aidé beaucoup quand vous tentiez d'obtenir la réponse mais bon parfois écrit au sujet du problème est la meilleure façon de forcer le cerveau à penser différemment. Heureux êtes-vous arrivé il travaille quand même.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com

Afficher de l'information

  • Total des messages de ce sujet: 4 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 34 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC