Différents problème AS3 HELLPP

Carmabui Messages postés 3 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 29 avril 2008 - 9 avril 2008 à 15:47
Carmabui Messages postés 3 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 29 avril 2008 - 11 avril 2008 à 20:57
Bonjour à tous.

Je suis débutant en FLASH et AS3 et donc j'essaye d'en apprendre un maximum sur le sujet mais j'ai 2 3 problèmes qui me bloc en ce moment et même en cherchant bien sur le net c'est un peu l'impasse.
Je vous remercie d'avance pour le coup de main !

premier problème :

j'ai crée un petit site de test pour essayer les différentes fonctions de l'AS3 et j'ai fais une page avec un texte dynamique qui me charge un fichier TxT. Tout marche bien sauf que je voudrais faire un mini preloader pour charger le fichier. Dans cette optique j'ai crée un fichier TxT de 500ko le problème est que ma barre de chargement ne fonctionne pas alors que quand je test avec un trace je vois bien le chargement ce faire. Voici le code

[as]var LoadNews:URLLoader = new URLLoader();
    var FileNews:URLRequest = new URLRequest("monTexte2.txt");
    LoadNews.load(FileNews);
    LoadNews.addEventListener(Event.COMPLETE, fileLoaded);
    LoadNews.addEventListener(ProgressEvent.PROGRESS, fileProgress);
    
    function fileLoaded(evt:Event):void
    {
        barreNews.visible = false;
        var varNews:URLVariables = new URLVariables(LoadNews.data);
        monTexte.htmlText = varNews.news;
    }
    function fileProgress(evt:ProgressEvent)
    {
        barreNews.scaleX = evt.currentTarget.bytesLoaded/evt.currentTarget.bytesTotal;
    }
/as

Deuxième problème

J'ai trouver un script de bubbling intéressant avec un fichier exemple le truc c'est que déja j'ai du mal à la compréhension du code donc j'espère que vous pourrez éclairer ma lanterne :) . En gros c'est composé d'un clip container qui contient l'animation de mes boutons sous forme de clip et une animation texte dynamique . mais je comprends pas trop plusieurs chose que voici :

[as]this.fieldLabel.text = (parent as MovieClip).txtLabel;/as

J'ai un peu de mal avec le systeme parent child et donc je bloque sur "(parent as MovieClip)" à quoi ça sert exactement et comment ça marche

ensuite passons au code du clip

[as]
function onMouseOver(evt:MouseEvent):void
{
    var trg:MovieClip = evt.target as MovieClip;
    trg.removeEventListener(Event.ENTER_FRAME, onPlayBack);
    trg.play();
}

function onMouseOut(evt:MouseEvent):void
{
    var trg:MovieClip = evt.target as MovieClip;
    trg.stop();
    trg.addEventListener(Event.ENTER_FRAME, onPlayBack);
}

function onPlayBack(evt:Event):void
{
    var trg:MovieClip = evt.target as MovieClip;
    if (trg.currentFrame == 1) trg.removeEventListener(Event.ENTER_FRAME, onPlayBack);
    else trg.gotoAndStop(trg.currentFrame-1);
}
/as

donc dans ce code j'ai du mal avec le contenu de mouseover et de mouseout si vous pouviez m'expliquer ce que chaque ligne fait exactement ça serais vraiment gentil de votre part par exemple ce que veut dire "evt.target as MovieClip;" et  aussi pourquoi on utilise play() et stop() et pourquoi on fait rajoute un autre addEvent et pourquoi on fait le removeEvent ^^ à peu près tout en faite ...

et Enfin troisième problème après je disparais promis toujours avec cette source ci j'ai rajouté un écouteur pour MOUSE_DOWN pour que quand on clique sur les boutons ça m'affiche des pages différentes qui sont différenciées par mes étiquettes.

[as]function onMouseClick(evt:Event):void
{
    nomBouton = evt.currentTarget.name;
    etiquette = nomBouton.slice(4,nomBouton.length)
    gotoAndStop(etiquette);
}/as

 le problème est que étant donné que tout est contenue dans le clip Container quand je clique rien ne ce passe, je pense que c'est du faite que mes différentes occurences de mes boutons se trouvent à l'intérieur de mon clip container mais j'aimerais l'utiliser sans à avoir à mettre le contenu de mes frame dedans c'est a dire l'utiliser directement. Donc je voulais savoir si on pouvais relier mes différents boutons contenue dans mon clip Container aux etiquettes se trouvant sur ma sequence principal .

je met un lien en plus avec un .rar contenant une image du problème pour que ce soit plus clair et aussi le fla pour mon problème de preload (sitealixtest.fla) et aussi pour mon problème de boutton avec container (containerproblemebouttonetiquette.fla)

Voila , désolé pour la longueur . merci d'avance de prendre de votre temps pour m'aider :)

http://dl.free.fr/elNEevxAA/as3prob.rar

2 réponses

plaf_falp Messages postés 29 Date d'inscription mercredi 27 juin 2007 Statut Membre Dernière intervention 30 octobre 2008
10 avril 2008 à 10:18
salut !
je suis désolé j'ai pas bcp le temps donc je regarderai ton lien et le code plus en détail plus tard mais je peux répondre rapidement à 2/3 questions dans ton message :

[as]this.fieldLabel.text = (parent as MovieClip).txtLabel;/as

J'ai
un peu de mal avec le systeme parent child et donc je bloque sur
"(parent as MovieClip)" à quoi ça sert exactement et comment ça marche

>> je me suis heurté aux mêmes difficultés au début
en fait l'attribut parent en AS3 renvoit un objet de type DisplayObjectContainer donc si tu veux utiliser des méthodes de classe MovieClip ou des méthodes d'une classe personnalisée sur ton parent il te faut le caster, c'est l'objet du mot clé "as"
moi j'écris plutôt MovieClip(parent).txtLabel mais à ma connaissance c'est strictement la même chose
ce cast est indispensable dès que tu veux remonter dans les hiérarchies parents/enfants d'une displaylist car tu dois "dire" au compilateur le type d'objet du parent ou de l'enfant pour qu'il te laisse à priori utiliser des méthodes particulières non présentes dans la classe non dynamique DisplayObjectContainer

2ème problème :

function onMouseOver(evt:MouseEvent):void
{
    var trg:MovieClip = evt.target as MovieClip;
    trg.removeEventListener(Event.ENTER_FRAME, onPlayBack);
    trg.play();
}

ici je ne comprends pas la deuxième ligne il faudrait que je vois le code en entier et le .fla
pour le reste le système ici est le suivant : on place un écouteur sur l'évènement souris "mouse over" (ici on voit pas le code mais le "addEventListener" doit être placé sur le clip conteneur) et  quand l'évènement se produit on récupère l'objet survolé dans l'attribut target de l'évènement (la cible, donc on récupère une référence sur un des boutons animés ou sur le texte, c'est à dire sur le child survolé de notre conteneur) et on joue son anim. Le cast en MovieClip pr la même raison que ci dessus.
bubbling signifie que ton écouteur "agit" en phase de bubbling, c'est à dire quand l'évènement est remonté une deuxième fois à ton conteneur
pas très clair, mais je suis moi même pas encore au clair sur ces trucs ;)
le bubbling c'est le cas par défaut qd tu fais "addEventListener" sans préciser de 3ème argument, tu peux aussi spécifier un écouteur qui agit en phase de capture (voir l'aide sur ces sujets..)
l'idée ici c'est qu'on place pas un écouteur sur chaque child (ce serait lourd) mais uniquement sur le parent conteneur et on récupère dans la fonction la cible de l'évènement
je suis en train d'explorer ces histoires de "flow d'évènements" c'est un peu complexe au début mais ca a l'air très pratique

voilà pour le loader txt j'ai pas encore essayé de faire ca en AS3, je suis en pleine phase de découverte comme toi
bonne exploration !

plaf
0
Carmabui Messages postés 3 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 29 avril 2008
11 avril 2008 à 20:57
merci plaf pour le coup de main c'est vraiment super gentil de ta part :) je vais voir tout ce que tu m'a dit !
0
Rejoignez-nous