tiens voilà un exemple de comment structurer ton appli:
tiens voilà un exemple de comment structurer ton appli:
pour voir à quoi ressemble un projet amateur qui a réussi: http://www.advsys.net/ken/build.htm
Salut a tous,
Désolé de ce long temps d'absence, j’étais passé sur d'autres projets.
Me voici de retour sur la borne, j'ai avancé dans le bon sens, le seul hic c'est le fenêtrage.
J'ai réussi a ouvrir un swf externe, le seul soucis c'est que ca me bouffe mon menu comme ceci:
Menu de base:
Une fois le fichier externe chargé:
J'ai essayé de "ruser" en déplaçant le bouton menu principal mais le fichier chargé reste et ne se ferme pas bien que le fond revienne au menu principal.
Voila le code:
J'ai vu qu'on avais la solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf ); function openSwf(event:MouseEvent):void { var my_Loader:Loader = new Loader(); addChild(my_Loader); //This creates a new instance of the URLRequest object that contains the path //to the external swf. The load method then loads the SWF file into the loader //object. var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); }
Mais je n'arrive pas a la placer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part getURL("myMovie.swf","_blank")
Merci pour l'aide apportée.
Hello,
getURL est une méthode qui s'utilisait en AS2. En AS3 on utilise navigateToURL:
Code AS3 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 navigateToURL(new URLRequest());
Maintenant le souci de cette méthode, c'est que ça va t'ouvrir ton navigateur pour voir le fichier.
En fait pour ce que tu veux, le Loader est parfait, mais il faut bien le placé dans la displayList.
Il y a quelques semaines, je t'avais fournit ce bout de code:
Code AS3 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 var my_Loader:Loader = new Loader(); bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf ); var SWFContainer:Sprite = new Sprite(); function openSwf(event:MouseEvent):void { addChild(SWFContainer); SWFContainer.buttonClose.addEventListener(MouseEvent.CLICK, closeContainer); SWFContainer.addChild(my_Loader); //This creates a new instance of the URLRequest object that contains the path //to the external swf. The load method then loads the SWF file into the loader //object. var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); } /* Fermeture de l'exercice */ function closeContainer(e:MouseEvent):void { SWFContainer.addChild(my_Loader); SWFContainer.buttonClose.removeEventListener(MouseEvent.CLICK, closeContainer); //Bien sur on n'oublit pas de supprimer l'écouteur quand on en a plus besoin :) removeChild(SWFContainer); SWFContainer = null; }
Si tu addchild SWFContainer entre ton fond et ta nav, et que tu le place convenablement, par exemple
le média chargé ne passera jamais au dessus de ta nav.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SWFContainer.x = 150; SWFContainer.y = 150;
malheureusement ce code me donne 2 erreurs:
Séquence 1, Calque 'action lomb', Image 30, ligne 7 1119 : Accès à la propriété buttonClose peut-être non définie, via la référence de type static flash.display:Sprite.
Séquence 1, Calque 'action lomb', Image 30, ligne 22 1119 : Accès à la propriété buttonClose peut-être non définie, via la référence de type static flash.display:Sprite.
Les messages d'erreurs indiquent simplement que le bouton buttonClose n'existe pas.
Ta méthode pour load ton swf était déjà bonne vu que ça load
Je ne savais pas qu'on pouvait addChild le loader mais bon..
Hmm.. donc il faut que tu crée ce fameux bouton pour fermer le swf, ou alors tu t'en fiches, tu fermes le swf quand l'utilisateur clique sur un autre bouton de ton catalogue
Sinon à ton dernier essai c'est juste le placement qui ne te convient pas, ton swf devient un objet, il suffit de le placer comme tu veux sur les axes x/y, sans cela, c'est normal que par défaut ce soit à x0 y0
Essaye juste de le placer comme il faut dans ton interface
Mais je suggère que tu devrais faire un truc genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my_Loader.x = ?; my_Loader.y = ?;
ensuite tu manipules exercice comme tu veux, tu peux l'animer par exemple lors du load ou du unload.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf); var exercice:Sprite = new Sprite(); exercice.x = 150; exercice.y = 150; function openSwf(event:MouseEvent):void { //Si il y a un swf de load, on le retire if (exercice.numChildren) { exercice.removeChildAt(0) } var my_Loader:Loader = new Loader(); my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); } function onCompleteHandler(loadEvent:Event):void { exercice.addChild(loadEvent.currentTarget.content); }
Edit:
Hmm en y reflechissant, il y a plusieurs boutons, j'avoue que je ne sais pas trop comment faire passer un paramètre dans un MouseEvent.
La méthode simple est d'utilisé la propriété name de chacun de tes boutons, et d'y mettre le nom du fichier à load, de cette façon tu utilises qu'une seule fonction openSwf
Ca donne :
Ca devrait fonctionner... j'espère
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf); bt_catalogue.name = 'Exercice.swf'; var exercice:Sprite = new Sprite(); exercice.x = 150; exercice.y = 150; function openSwf(event:MouseEvent):void { //Si il y a un swf de load, on le retire if (exercice.numChildren) { exercice.removeChildAt(0) } var my_Loader:Loader = new Loader(); my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); var my_url:URLRequest=new URLRequest(event.target.name); my_Loader.load(my_url); } function onCompleteHandler(loadEvent:Event):void { exercice.addChild(loadEvent.currentTarget.content); }
Il a pas l'air d'avoir envie.
Pour ta première méthode j'ai droit a ça :
ArgumentError: Error #2180: Il est interdit de déplacer le contenu AVM1 (AS1 ou AS2) vers une autre partie de displayList lorsqu'il a été chargé dans un contenu AVM2 (AS3).
at flash.display:isplayObjectContainer/addChild()
at borneinteractiveMAJ_fla::MainTimeline/onCompleteHandler()
Pour ton édit il me dit ça:
Je désespère avec cette borne.Error: Error #2078: Impossible de modifier la propriété de nom d'un objet placé sur le scénario.
at flash.display:isplayObject/set name()
at borneinteractiveMAJ_fla::MainTimeline/frame30()
at flash.display::MovieClip/gotoAndStop()
at borneinteractiveMAJ_fla::MainTimeline/go_Lombalgie()
Ok, je ne sais pas alors
Je ne connais pas cette erreur AVM1 AVM2, j'imagine que le pdf a été converti en AS1/AS2 et le load dans un sprite AS3 ça va pas, mais c'est juste une supposition.
Reviens à ce qui a fonctionné alors
Pour l'autre erreur aucune idée non plus, je ne sais pas ce qu'est bt_catalogue mais apparemment il n'accepte pas la propriété .name, c'est un petit peu embêtant mais bon au pire tu peux faire une fonction event différente pour chaque bouton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf ); var my_Loader:Loader = new Loader(); addChild(my_Loader); my_Loader.x = 150; my_Loader.y = 150; function openSwf(event:MouseEvent):void { //This creates a new instance of the URLRequest object that contains the path //to the external swf. The load method then loads the SWF file into the loader //object. var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); }
Salut,
Le problème en fait c'est qu'effectivement ça marche mais ça "bug"
car le fichier chargé ne se ferme pas au clic dans un autre menu donc il me bouffe mon écran quoi qu'il arrive. (voir le screen )
Donc même si je change de place le fichier il reste en premier plan et me pourrit la navigation.
C'est pas évident ce que je cherche a faire.
Tu es sûr que le fichier chargé reste dans mon dernier exemple ?
Parce que dans ton essai initial c'est normal vu que tu recrée un Loader à chaque clique, donc ça s'entasse
Là tu en utilises qu'un seul, tu peux voir qu'on déclare le loader en dehors de la fonction
mais je ne sais pas si le fait de load un fichier, vide le loader automatiquement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf ); var my_Loader:Loader = new Loader(); addChild(my_Loader);
au cas où essaye avec un unload comme ça :
Comme tu as plusieurs boutons et qu'on ne peux pas utiliser la propriété .name, il y a sans doutes d'autres choses à faire mais je ne les connais pas, le plus facile et le moins jolie c'est de multiplier les fonctions, ca donnera un truc comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 bt_catalogue.addEventListener(MouseEvent.CLICK,openSwf ); var my_Loader:Loader = new Loader(); addChild(my_Loader); my_Loader.x = 150; my_Loader.y = 150; function openSwf(event:MouseEvent):void { my_Loader.unload(); var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); }
my_Loader restera placer aux coords 150,150
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 bt_catalogue.addEventListener(MouseEvent.CLICK,openCatalogue ); bt_diaporama.addEventListener(MouseEvent.CLICK,openDiaporama ); var my_Loader:Loader = new Loader(); addChild(my_Loader); my_Loader.x = 150; my_Loader.y = 150; function openCatalogue(event:MouseEvent):void { my_Loader.unload(); var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); } function openDiaporama(event:MouseEvent):void { my_Loader.unload(); var my_url:URLRequest=new URLRequest("Diaporama.swf"); my_Loader.load(my_url); }
Si tu as des swf de taille différente qui ont besoin d'être centrer différemment, tu peux calculer le placement automatiquement en fonction de sa taille, de la taille du menu et de la taille du stage, mais le plus simple est de les placer manuellement au fur et à mesure de tes essais
Si tu peux load ton swf, le placer comme tu veux dans ton interface et l'unload, y aura plus de problèmes... pour l'instant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function openCatalogue(event:MouseEvent):void { my_Loader.unload(); my_Loader.x = ??; my_Loader.y = ??; var my_url:URLRequest=new URLRequest("Exercice.swf"); my_Loader.load(my_url); } function openDiaporama(event:MouseEvent):void { my_Loader.unload(); my_Loader.x = ??; my_Loader.y = ??; var my_url:URLRequest=new URLRequest("Diaporama.swf"); my_Loader.load(my_url); }
Il ne veut toujours pas, il se place en premier plan sans degager si on clique ailleurs
Navré alors, mes connaissances sont trop limités pour avoir d'autres suggestions
Il n'y a aucun message d'erreur ?
Le fait de load ça sera toujours au premier plan, je pensais que l'important c'était surtout d'éviter qu'il se place sur ton menu ?
Si tu veux je peux y jeter un oeil directement dessus, mais sans garanti de grand succès
Je peux m'avancer sur une théorie hasardeuse, peut être c'est la conversion du pdf en swf qui pose un souci, tu as utilisé quoi pour faire ça ?
Oui le but était d’éviter qu'il se place sur le menu mais au final meme si il mange pas le menu si on clique ailleurs il reste derrière (voire des fois en premier plan si tu regarde mes screen) ça fais pas propre.
Pour le logiciel de conversion je t'avoue que je ne me souviens plus, ça date maintenant et j'ai changé de poste entre temps.
La meilleure solution serai d'ouvrir le fichier original qui est en fait un diaporama powerpoint.
Apres si tu veux avec netviewer j'peut te montrer mon écran en live si tu as 5 minutes.
Ouai mais comme je disais c'était normal, quand dans ta fonction tu crée le Loader et tu le add sur la scène, sans aucune méthode pour le retirer, ça s'entasse.
Mais là dans mon dernier exemple le Loader est unique et il y a un unload à chaque nouveau click
En faite j'y pense que maintenant, mais ça dépend aussi de où tu places ton code, tu utilises la timeline ? tu as mis le code de façon global ou dans un bouton ?
J'utilise pas la timeline et je place jamais rien sur la scène manuellement mais je suppose que si tu met ce code dans un bouton, alors ça pose problème, si tu utilises la timeline il faut que tu mettes la déclaration du Loader dans ta première frame
Désolé je n'ai pas netviewer, je connais même pas
tu n'en a pas besoin c'est une appli web java (du moment que java est installé sur ton poste)
y'a que de mon coté sur mon poste ou j'ai le client
il te suffit d'aller la:
https://get.netviewer.com/support/jo...9324&sipw=nv64
et je te montre mon ecran
C'est sympa netviewer
En tout cas même si j'y ai songé qu'à la fin, satisfait d'y avoir penser à cette Timeline, faudra que je m'en rappelle de demander si elle est utilisé
Ah netviewer, le must c'est que c'est gratuit et ça marche même entre PC et MAC. Je l'utilise souvent pour dépanner.
Puis pour la timeline générale tu parle?
J'ai trouvé cette façon de faire dans un tuto : http://www.flash-sockets.com/index.p...d=38&Itemid=54
Au final je trouve que ça structure pas mal et ça me donnais une vision claire de ce que je faisais.
En tous cas un grand merci pour ton aide encore.
Dernier petit soucis
La borne fonctionne niquel que ça soit en swf ou exe MAIS seulement en écran normal pas en plein écran(seulement quand il charge les vidéo sinon tout marche bien).
Bien évidement j'ai besoin du plein écran...
Voila ce qu'il me dit en plein écran
je clique sur continuer et :ReferenceError: Error #1056: Impossible de créer la propriété __id4_ sur flash.display.Stage.
at flash.display::MovieClip/gotoAndStop()
at borneinteractive_fla::MainTimeline/go_Prothese()
Ce qui est bizarre c'est en fenêtré il charge tout a la perfection....TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at borneinteractive_fla::MainTimeline/__setProp___id7__S()
at borneinteractive_fla::MainTimeline/frame50()
at flash.display::MovieClip/gotoAndStop()
at borneinteractive_fla::MainTimeline/go_Video()
Une idée du problème?
Petite question aussi, comment justement lancer l'animation en plein écran par défaut par la suite quand je clique sur l’exécutable?
Merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager