- Actualité
- Le streaming de vos animations
- Le jeu de pousse pousse
- Director 8 est là!

- Xtras
- Les Xchoses
- Mui Xtra - fileIO

- 3D quadée (D7)
- La 3ème dimension
- Modélisation Lingo
- Perspective
- Faces cachées

- Toutes les archives Lingo

- Best of
- Les behaviors
- Les Quads
- WindowType (D6)
- Le Casse-brique

- EasyDialog Xtra Download page


 

Le Streaming dans vos animations Shockwave

Avant l'arrivée de shockwave en 95, on n'imaginait pas qu'un multimédia de qualité puisse passer sur la bande si lente du Web.

De la même façon que les graphistes du web, venant du monde de l'impression, les développeurs de shockwave venant du monde du CDRom Multimedia, on eut à apprendre une variété de techniques pour réduire la taille de leurs medias.
Il a fallu faire de nombreux sacrifices dans la qualité de leurs présentations de façon à équilibrer la richesse de leurs projets avec la patience de leurs utilisateurs sur le temps de chargement.

Avec Director 6, Macromedia a créé de nombreuses nouveautés pour accélérer les besoins du web tout en libérant les développeurs.

Un oeil sur streaming shockwave

Une animation shockwave n'est pas vraiment streamée dans le sens même du mot c'est à dire donner l'information à flots continu - une phrase plus descriptive serait un chargement sélectif ou préféré. La façon dont une page web est chargée c'est d'abord le chargement du fichier HTML lu par le browser. Celui ci interprète le fichier et appelle le reste des médias, les affichant sur la page lorsqu'elles sont chargées complètement. C'est ainsi que shockwave streame. Le scénario de l'animation est chargé en premier, et est ensuite interprété par le plug-In ou le control ActiveX. Enfin les médias sont chargées et affichées dans l'ordre où elles apparaissent dans le scénario.

Comme pour le document HTML, les medias deviennent seulement disponibles que lorsqu'elles ont été totalement chargées.
Ce qui est différent des technologies utilisant un véritable streaming qui donnent accès à des blocs de media.

Une animation shockwave basée sur un fichier d'origine correctement ordonnée donnera un bon streaming. Si on comprend comment le streaming de shockwave fonctionne cela aidera à trouver la meilleure façon pour construire sa movie.

 

Donner les options de streaming dans Director

Director offre des options de base pour le playback en streaming des movies shockwave.
Menu Modifier - animation - playback qui ouvre la boite de dialogue playback properties

Il y a trois option sous l'article streaming : attendre tous les medias, utiliser les medias disponibles, montrer les fichiers de remplacement ou afficher les repères. Par défaut c'est attendre pour tous les medias, ce qui basiquement veut dire : pas de streaming puisque l'animation attendra que tous les medias soient chargées avant de démarrer. Avec l'option utiliser les medias dès qu'elles sont disponibles, l'animation démarre immédiatement. La scène vide apparait en premier et dès que chaque média est chargée elle apparait sur la scène. L'option suivante montrer les fichiers de remplacement montre les médias manquantes ou partiellement chargées avec des petites boites qui prennent la taille et la place des graphiques manquants. La dernière option de sreaming Pré-récupérer ou Pre-Fetch nous permet de spécifier le nombre d'images à charger avant que l'animation ne commence. Cela permet d'afficher les premières images de l'animation pendant que le reste de l'animation se charge. Cette option pourrait afficher un message à l'utilisateur dans le genre "Soyez patient, l'animation est en train d'être chargée" ou d'afficher une petite animation pour le distraire avant que le vrai show ne démarre. On pourra éventuellement créer une barre de status, (TimeBar) dans la première image de l'animation.

Utilisation de frameReady et de mediaReady

frameReady

Comme son nom l'indique, la première des ces commandes, frameReady, teste si oui ou non tous les medias necessaires pour une image en particulier sont prêtes. En utilisant cette commande, on peut savoir quelle partie de l'animation est prête et l'afficher à l'utilisateur.

Si un utilisateur cliq sur un bouton qui envoie la tête de lecture sur une image qui n'est pas encore chargée, il aura devant les yeux l'écran vide. En utilisant frameReady on peut vérifier si l'image est prête et si non avertir l'utilisateur d'attendre encore un peu.

voici un exemple d'utilisation de frameReady, dès que l'image est prête la tête de lecture est envoyée à l'image en gros plan représentative de la vignette.

script de scénario pour les vignettes ancienne syntaxe

on mouseWithin me
   cursor 280
   set the visible of sprite (the spriteNum of me + 5) to true -- titres
end
on mouseLeave me
   cursor -1
   set the visible of sprite (the spriteNum of me + 5) to false
end
on mouseDown me
    set the loc of sprite the clickon = the loc of sprite the clickOn + 3
    updateStage
end
on mouseUp me
    set the loc of sprite the clickOn = the loc of sprite the clickOn - 3
    updateStage
   if frameReady (the spriteNum of me + the frame) then
    set the visible of sprite (the spriteNum of me + 5) to FALSE
    go frame (the spriteNum of me + the frame)
   else
     alert "l'image n'est pas encore chargée"
   end if
end

script de scénario pour les vignettes nouvelle syntaxe

on mouseWithin me
    cursor 280
     sprite(me.spriteNum + 5).visible = TRUE -- titres
end

on mouseLeave me
     sprite(me.spriteNum + 5).visible = FALSE
end

on mouseDown me
     sprite(the clickOn).loc = sprite(the clickOn).loc + 3
     updateStage
end

on mouseUp me
     sprite(the clickOn).loc = sprite(the clickOn).loc - 3
     updateStage
     if frameReady(me.spriteNum + the frame) then
         sprite(me.spriteNum + 5).visible = FALSE
         go frame (me.spriteNum + the frame)
     else
         alert "l'image n'est pas encore chargÈe"
     end if

mediaReady

Similaire à frameReady mais là où frameReady ne vérifie que si une image en particulier est chargée, mediaReady permet d'être un peu plus sélectif de façon à tester si un media est prêt dans une distribution en se basant sur l'acteur.

Dans l'exemple suivant la tête de lecture reste sur une seule image, en utilisant the mediaReady of member (ou member(quelActeur).mediaReady) si l'acteur correspondant est chargé sa visibilité sera effective, sinon un message d'alerte s'affichera.

script de scénario pour les vignettes nouvelle syntaxe

on mouseUp me
   set the loc of sprite the clickOn = the loc of sprite the clickOn - 3
   updateStage
   if the mediaReady of member (the memberNum of sprite the spriteNum of me - 1) then
     set drapeau = 1
     set the visible of sprite (the spriteNum of me + 5) to FALSE
     set the visible of sprite (the spriteNum of me + 10) to TRUE
   else
     alert "l'image n'est pas encore chargée"
   end if
end

script de scénario pour les vignettes ancienne syntaxe

on mouseUp me
     sprite(the clickOn).loc = sprite(the clickOn).loc - 3
     updateStage

     if member(sprite(me.SpriteNum).memberNum - 1).mediaReady then
          drapeau = 1
          sprite(me.spriteNum + 5).visible = FALSE
          sprite(me.spriteNum + 10).visible = TRUE
     else
     alert "l'image n'est pas encore chargÈe"
     end if
end

En regardant la distribution de cet exemple vous voyez que l'image de l'avenir est la première, suivie des autres images. Les medias sont chargées dans l'ordre où les acteurs apparaissent dans le scénario -- partant de l'image 1, piste 1 et descendant à travers les pistes sur un plan vertical et sur le plan horizontal vers les images suivantes. Comme la grosse photo de l'avenir apparaît dans le scénario avant les autres, elle est la première à être chargée. Placez les éléments que vous désirez apparaître en premier dans les pistes supérieures du scénario et les éléments qui peuvent être affichés plus tard dans les pistes inférieures.

Créer une barre de status en utilisant streamStatus

L'un des moyens le plus sur pour garder son utilisateur en attente lors du process de chargement est de lui montrer combien de temps celui-ci prendra.

Pour cela on créera une barre de status de chargement en (pre-fetchant) pre-récupérant la première image de l'animation qui contient le graphique de la barre de status. Le lingo streamStatus est utilisé pour diriger le chargement de la movie et créer les informations nécessaires pour mettre à jour la barre de statut. Dans l'exemple, la largeur (width) de la barre est de 200 pixels.

Script d'animation ancienne syntaxe

on prepareMovie
     set the width of sprite 2 to 0
     tellStreamStatus(TRUE)
     put "" into field "pourcentage"
     repeat with i = 8 to 10
          set the visible of sprite i to false
     end repeat
end


on streamStatus url, etat, octetsTransmis, totalOctets, erreur
     if etat = "Complete" then
          go to frame 2
     else
          set pourcentageActuel = (float(octetsTransmis) / float(totalOctets))
          set pourcentageSprite = integer(pourcentageActuel * 200)
          set the width of sprite 2 = pourcentageSprite
          set the text of field "pourcentage" = integer(pourcentageActuel * 100) & "%"
          updateStage
     end if
end

Script d'animation nouvelle syntaxe

on prepareMovie
     sprite(2).width = 0
     tellStreamStatus(TRUE)
     member("pourcentage").text = ""
     repeat with i = 8 to 10
          sprite(i).visible = FALSE
     end repeat
end

on streamStatus url, etat, octetsTransmis, totalOctets, erreur
     if etat = "Complete" then
          go to frame 2
     else
          pourcentageActuel = (float(octetsTransmis) / float(totalOctets))
          pourcentageSprite = integer(pourcentageActuel * 200)
          sprite(2).width = pourcentageSprite
          member("pourcentage").text = integer(pourcentageActuel * 100) & "%"
          updateStage
     end if
end

 

 

 

< Sommaire