Bonjour,

Je débute et j'ai besoin d'être éclairé sur un point, je me permet de solliciter votre attention :

Un diaporama.swf, fait appel à un fichier xml lequel indique les images à afficher et les liens sous forme <link src="ma_page.html"/>

Je veux que ces liens s'ouvrent dans des Popup (les images présentées par le diaporama.swf ne sont que des fragment, il s'agit de montrer l'image dans son ensemble)

Faut-il adapter le code de mon xml ? j'ai essayé en incluant des astuces de openweb.eu.org, mais ça ne fonctionne pas...

Je n'ai pas placé le JS de ce tuto de Raphael dans ma page contenant le diapoama.swf puisque les liens sont dans mon .xml ...

Merci de votre attention !!
Salutation Benkusz

Si j'ai bien compris tes liens cliquables, sont aussi dans le Flash du genre :
// Script actionscript
navigateToURL (urlPopup:URLRequest, fenetrePopup:String = null);

et en cliquant sur ces liens, tu veux ouvrir un popup HTML - c'est çà ?
En un mot tu veux ouvrir un popup HTML à partir du Flash.

Si oui - Il te faudra quand même du javascript.

Utilisé la méthode : call ('nomFonction') de la classe ExternalInterface - AS2 ou AS3.
La méthode call () permet d'exécuter une fonction javascript. Un évènement (click) à partir du Flash.

Et comme exemple :
// Script javascript
function ouvrirPopup (cible_url, nomPopup, dimensionPopup) { 
 // instructions
}
et en Flash
// Script actionscript
ExternalInterface.call ('ouvrirPopup');
Je dirais même que c'est la meilleur façon pour faire shape.

Remarque aussi que la méthode : navigateToURL () prend le pseudo-protocole à l'époque de AS1
// Script actionscript
navigateToURL ('javascript:ouvrirPopup ()');


Mais comme tu peux le voir : nous ne pouvons faire sans javascript pour ce genre particulier.

Si vraiment tu débute en programmation Flash je te suggère le pseudo-protocole. Quoiqu'il en soit tu auras besoin de javascript pour fabriquer à la volé la fenêtre du popup.

Au mieux évidemment serait de poster tes codes : XML, javascript et s'il le faut le code AS.

ÉDIT : J'ai pensé te laisser une capture.
Évidemment il ne s'agit pas des résultats des exemples des scripts ci-haut mentionné : Mais d'un script un peu plus complet en Flash comme en javascript.

upload/20350-popup.jpg

On ouvre donc un popup avec la méthode statique ExternalInterface.call (param, ...args)
Le texte « Lance Popup » est écrit avec la propriété « htmlText » de Flash, dont la valeur de l'attribut href='event:ouvrirPopup'> comme ceci :
// Portion de code actionscript de TextField
tx.htmlText = '<a href="event:ouvrirPopup">Lance Popup</a>';
Tu peux faire en cliquant sur des images charger en Flash etc.

..
Modifié par zardoz (21 Sep 2011 - 10:23)
Merci beaucoup Zardoz !
effectivement je débute et c'est pas facile.
Dans mon flash et dans ma page il n'y a pas de javascript relatif à ce diaporama et cette envie de popup, il n'y a pas de navigatetoURL (...), il y a seulement une composant IgalleryX.mxp préalablement installé avec Adobe Extension Manager.

Voici un lien vers la page en question.

Plutôt que d'ouvrir le liens dans un nouvel onglet, je voudrai qu'il s'ouvre dans un popup.

Pour schématiser voilà ce que je possède :
une page.php > qui contient entre autres un doc.swf >
le doc.swf fait appel à un data.xml > le data.xml contient des <link src="page.html" />

Pour info, voici à quoi ressemble mon xml :

<?xml version="1.0" encoding="UTF-8" ?>

<IgalleryX>
	
	<photos>
			<photo>
				<content src="images/mini_illus/1.jpg" />
				<caption content="Projet : Blablabla" />
				<link src="exemple1.html" />
			</photo>
                       <photo>
				<content src="images/mini_illus/80.jpg" />
				<caption content="Projet : blablablabla"/>
				<link src="exemple80.html"/>
			</photo>
			
	</photos>


Biensûr je n'ai mis ici que deux exemples le fichier et bien plus long.

Mes page html appelées depuis le xml ne contiennent rien d'autre que l'image et une fonction onClick="self.close(). Voici pour exemple une de ces pages
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>exemple Alsa</title>
</head>

<body>
<img src="POP/exemplealsa.jpg" alt="Exemple Alsa" onClick="self.close()" />
</body>
</html>


J'ai essayé de mettre ton code dans flash sur la scène, ça prends le dessus sur la manière dont devrait s'ouvrir la page et (_top au lieu de _blank) et annule le onClick="self.close() du html.

Merci de ton attention !
Oui évidemment les codes que j'ai poster ne sont que des exemples, il ne s'agit pas ici du code qui génère les résultats comme la capture que j'ai laisser au dernier message.

Celui que j'ai tester, je l'ai écrit en AS3. Et ça fonctionne très bien. (voir capture)
Ce n'est pas une obligation de placer « link » dans le fichier XML. Il n'y a pas d'attribut qui gère la dimension du popup du genre : src="valeur" largeur="valeur" hauteur="valeur". Mais pour des popup's tu ne peut éviter javascript.

Pour des popup's il te faudra javascript car c'est lui qui génère les popup's. Remarque qu'il n'est pas rare de voir les images dans une autre fenêtre comme tu le fait. Et c'est bien aussi.

Quoiqu'il en soit je te suggère d'utilisé la méthode statique call ()
ExternalInterface.call ('nomFonctionJavascript', 'popup.html', largeur, hauteur);
Voici un exemple en AS3.
// Script actionscript AS3
var tf:TextFormat = new TextFormat ();
tf.bold = true;
tf.color = 0x000000;
tf.size = 22;

var tx:TextField = new TextField ();
tx.x = 12;
tx.y = 35;
tx.width = 300;
tx.height = 33;
tx.htmlText = '<a href="event:ouvrirPopup">Lance Popup</a>';
tx.selectable = false;
tx.setTextFormat (tf);
addChildAt (tx, 0);
tx.addEventListener (TextEvent.LINK, lancePopup);

function lancePopup (e:TextEvent)
{
   if (ExternalInterface.available)
   {
      ExternalInterface.call ('ouvrirPopup', 'externalInterfacePopup.html', 500, 100);
   } 
   else
   {
      trace ('L\'interface n\'est pas disponible sur votre système');
   }
}

C'est le code de la capture du dernier message ici en haut.

Et le javascript en HTML comme ceci
// Script javascript
function ouvrirPopup(url, largeur, hauteur)
{
   gauche = (screen.width/2)-(largeur/2);
   haut = (screen.height/2)-(hauteur/2);
   window.open(url, "popup", "height=" + hauteur + ", width=" + largeur + ", status= no, toolbar=no, menubar=no, location=no, resizable=no, titlebar=no, scrollbars=yes, fullscreen=no, top=" + haut + ", left=" + gauche);
}
Celui-ci centre le popup au screen du navigateur.

À la balise object le id=valeur est obligatoire avec IE. Exemple
// InstructionS HTML
<object id='flashobjet' type='application/x-shockwave-flash' data='externeFlash.swf' width='520' height='100'>
 <param name='movie' value='flash/externeFlash.swf' />
 <param name="allowScriptAccess" value="sameDomain" />
</object>
Le « id » de object est obligatoire. Même si il n'est pas utilisé dans les scripts

..
Modifié par zardoz (21 Sep 2011 - 11:29)
Merci merci !

Je n'arrive pas encore à le faire fonctionner, je débute il me faut du temps pour interpréter ce qui se passe (plutôt ce qui ne se passe pas).

mon Igallery.mxp fonctionne en AS2. Ne serait-ce pas une source de problème ?

Aussi je ne comprends pas quels éléments de tes scripts je dois adapter à mon cas et qu'est ce que j'écris où ... Smiley sweatdrop

Dans Flash quand rien n'est sélectionné (soit sur la scène) je copie dans la fenêtre Actions - Images :
// Script actionscript

ExternalInterface.call ('nomFonctionJavascript', 'popup.html', largeur, hauteur);


Je ne comprends où j'écris le code AS3, dans une page script.as liée à mon html ?
Et le
a écrit :
java script en HTMLl
aussi dans ma page html ?

Et tu m'a perdu avec id=valeur pour IE...

J'espère que cette saga intéresse un intéressera d'autres novices ! Smiley ohwell
Oui AS2 c'est correct pour utiliser ExternalInterface.call
Je n'ai jamais utiliser mxp, si ce n'est qu'une extension de Adobe.

Pour ce qui est du reste il faudrait voir ton script AS2. Je sais pour l'instant qu'il s'agit d'un coverflow, le script doit être assez complexe. Mais pas impossible à faire.

Le ExternalInterface.call doit être placer obligatoirement à un évènement click, de Flash. Car c'est lorsque l'on clique sur l'image que la nouvelle fenêtre est appeller. Tu dois avoir un évènementiel quelque part dans ton script, qui permet de cliquer et d'appeller le popup. Cet évènement est directement lié au chargement des images. C'est sur une image que nous cliquons, pour ouvrir la fenêtre.

C'est d'ailleurs la seule partie du script qui te concerne vraiment pour faire en fonction de tes intérêts.

ÉDIT : Il n'y a qu'une légère différence entre AS2 et AS3. En AS2 tu doit l'écrire ainsi
// Script actionscript AS2
flash.external.ExternalInterface.call ('nomFonctionJS', 'popup.html', largeur, hauteur);
Remarque que je ne connais pas beaucoup AS2. Je suis passer de AS1 à AS3. Mais je pourrai quand même t'aider, te suggérer des pistes.



..
Modifié par zardoz (21 Sep 2011 - 22:14)
Bon... IgalleryX.mxp préalablement installé avec Adobe Extension Manager, est sensé être quelque part et accompagné d'un .jsfl c'est lui qui serait éditable et contiendrai le .as

Quand je suis dans flash et que je selectionne IgalleryX je peux agir sur lui par le biais d'une fenêtre "paramétre de composant" upload/38557-flashCS5.jpg

Je vais chercher encore... et prendre du paracétamol Smiley smile
Oui en effet je comprend mieux ta situation.

Les fameux fichiers.mxp (des extensions d'auteurs) et que je n'utilise jamais. Je ne saurais te dire cependant jusqu'où tu pourras modifier le module. Sans compter évidemment le respect des droits d'auteurs.

Le seul .mxp que j'ai déjà installer, il y a longtemps, concerne la pédagogie et l'enseignement en AS3. Mais je ne connais pas plus les fichiers .mxp. Il est possible que tu n'es pas accès aux scripts dans ce genre d'extension. Mais le principale à retenir sont les droits d'auteurs.

En générale les fichiers .mxp demande beaucoup d'expérience de la part des utilisateurs. Disons que ce n'est pas vraiment ma façon de développer. Je préfère et de loin écrire mes scripts. Mon but étant d'apprendre à programmer et à développer, et autant que possible en POO.

Il s'agit d'un composant. Donc d'un SWC. Mais les scripts ne sont pas nécessairement accèssibles. Le seul accès au redimensionnement et chargement des données sont en générale accèssible. Bref un SWC à installer avec les quelques propriétés de base accèssibles pour l'installation.

Je te donne une adresse ici d'un coverflow d'un membre actif sur flashkod :coverflow. Il s'agit de Arnooooo dont les travaux sont super bien. Par contre l'accès aux scripts sont permises. Tu pourras t'inscrire sur Flashkod et télécharger le coverflow, avec une utilisation beaucoup plus ouverte.

..
Modifié par zardoz (21 Sep 2011 - 23:56)
Merci infiniment pour ce lien !!!

C'est beaucoup plus intéressant en effet de travailler comme ça !
J'ai été guidé vers ce IgalleryX.mxp par le magasine Computer arts... je ne crois pas l'avoir volé, j'ai suivi les liens de téléchargement du magasine.

Je vais recommencer ma page à partir de ces documents, et chercher à inclure tes codes pour les popups.
Merci encore !
C'est possiblement dans le fichier SlideTimer.as que tu pourras placer ton nouveau code. Il y a déjà un script ExternalInterface.call () qui appelle l'exécution d'un script javascript. Et il est placer à plusieurs endroits des fichiers (*.as). Tu pourras donc en placer un autre, pour le popup. Je tiens à te dire que les façons de faire, sont multiples. Au point que je te suggère un include en Flash du genre : include 'scripts/ouvrePopup.as'.

C'est à ce niveau que l'image est mise en position de face. Le script du « Timer » est stopper à ce moment précis, et à chaque click (après l'animation), de gauche comme de droite.

N'oublis ici qu'il y a deux types de click sur l'interface. Un genre pour le défilement de gauche à droite ou vis versa, de droite à gauche. Toi tu veux placer un script sur l'image de face non celles en angle.

Comme tu peux le voir sur le demo, aucun script évènementiel ne se rapporte à l'image du centre. On peut donc jouer dessus. Si ce n'est qu'il joue un rôle sur la liste au dessous. Cependant la liste, est facultative. Tu peux donc la soustraire, cette liste.

Comme ceci : remarque que à gauche comme à droite il y a déjà un évènement click pour le défilement.

upload/20350-arnooooo.jpg

C'est dans le fichier SlideTimer.as que tu trouveras la possibilité de placer un script.
externalInterface.call ('nomFonctionJS', 'url', largeur, hauteur); // en AS3 seulement.

Si tu trouve ça trop difficile il reste une solution avec XML et PHP. Ne rejette pas pour autant le fichier.mxp.

Si tu modifie le fichier XML en ajoutant deux attributs : largeur='valeur et hauteur='valeur' à la balise <link/>, tu peux manipuler ce fichier XML avec PHP.

Voici un exemple de la balise <link/> modifier.
// instructions XML
<link src='valeur' largeur='valeur' hauteur='valeur' />
Et permettre à javascript - function ouvrirPopup () - de récupérer ces nouvelles valeurs. Et d'ouvrir un popup au dimension de l'image et centrer au screen. La façon la plus simple.

..
Modifié par zardoz (23 Sep 2011 - 05:07)