2012-02-23 1 views
0

Je suis relativement nouveau à ce genre de chose en Flash alors je suis vraiment désolé si mon explication fait défaut dans tous les domaines, et j'apprécierais vraiment que des réponses puissent expliquer pleinement ce que je fais afin que je puisse apprendre par opposition à simplement coller dans une solution. Ce que j'essaie de produire est une petite bannière animée qui, une fois cliquée, lancera une superposition semi-transparente (similaire à LightBox, initialement conçue pour LightBox) couvrant le contenu de la page Web et contenant un lecteur vidéo. A partir de maintenant, je vais me référer à ces éléments comme «bannière» et «superposition». La superposition et la bannière sont contenues dans des fichiers .swf distincts.Bannière animée lancement de superposition de fenêtre complète avec vidéo avec des composants tiers

La bannière est relativement complexe, en ce sens qu'elle s'anime au chargement, joue une animation en boucle lorsqu'elle est inactive et une autre animation sur mouseOver. En cliquant sur la bannière ou en permettant à l'animation mouseOver de terminer, lancez la superposition. J'avais une version fonctionnelle qui appelait une Lightbox jQuery, mais on m'a maintenant demandé de construire cette fonctionnalité en utilisant d'autres composants tiers et cela a brisé l'animation et l'interactivité de la bannière.

Ceci est le code ActionScript tel qu'il est dans le fichier de bannière.

import flash.external.ExternalInterface; 
import flash.events.MouseEvent; 
import flash.events.Event; 

stop(); 

curl_mc.alpha = 0; 

curl_mc.stop(); 

hotspot_mc.useHandCursor = true; 
hotspot_mc.buttonMode = true; 

hotspot_mc.addEventListener(MouseEvent.ROLL_OVER, onLoopRollover, false, 0, true); 
hotspot_mc.addEventListener(MouseEvent.ROLL_OUT, onLoopRollout, false, 0, true); 

hotspot_mc.addEventListener(MouseEvent.CLICK, screenad.shared.callMethod("launchLayer")); 
curl_mc.addEventListener('curlComplete', screenad.shared.callMethod("launchLayer")); 

function onLoopRollover(e:MouseEvent):void 
{ 
    loop_mc.alpha = 0; 
    loop_mc.stop(); 

    curl_mc.alpha = 1; 
    curl_mc.gotoAndPlay(1); 
} 

function onLoopRollout(e:MouseEvent):void 
{ 
    loop_mc.alpha = 1; 
    loop_mc.gotoAndPlay(1); 

    curl_mc.alpha = 0; 
    curl_mc.stop(); 
} 

Et voici le code ActionScript dans le fichier de superposition.

screenad.hide(); 

screenad.shared.'showAd' = function() 
{ 
    screenad.show; 
} 

Ces refléter les changements qui me ont été proposés par l'équipe de soutien des composants, mais l'animation dans la bannière est toujours brisée comme l'interactivité est le lancement de la superposition.

Répondre

0

Je pense que vous avez besoin d'un mélange de HTML + Flash pour résoudre ce problème.

Ce que je ferais probablement est de devoir séparer les objets flash.

La bannière et la vidéo. Une fois que vous avez cliqué sur la bannière, vous pouvez placer une superposition HTML sur toute la page et y charger le composant vidéo flash.

Vous pouvez effectuer la communication via flash -> Javascript via la classe ExternalInterface.

par exemple:

AS3

if(ExternalInterface.isAvailable) 
{ 
    ExternalInterface.call("loadOverlayVideo","4") 
} 

Javascript

function loadOverlayVideo(videoId) 
{ 
    showBlahBlah() 
} 

Remarque: Si vos fonctions sont à l'intérieur d'une fonction intégrée JQuery, vous devrez peut-être "extérioriser" la fonction en utilisant :

window.loadOverlayVideo = loadOverlayVideo 

Sinon flash ne sera pas capable de le trouver

S'il vous plaît assurez-vous que vous utilisez des paramètres configurables sur chaque fonction et vous obtiendrez un composant réutilisable vraiment à utiliser autant de fois que vous le souhaitez.

J'espère que ça aide!

Questions connexes