FLASH MX : PB de LOADMOVIE

simach

Membre junior
3 Mars 2005
55
2
54
Bonjour à tous,

Switcher depuis peu, je travaille sur Flash Mx version MAC alors que je faisais tout avant sur mon PC

Le problème que je rencontre est le suivant :
- Sur MAC, je crée un animation toute simple, que je publie afin d'obtenir un fichier SWF
- Ensuite, je crée une nouvelle animation, qui va charger la première animation par l'instruction LOADMOVIE

- Quand je tente de charger le fichier SWF créé sur MAC, ça ne fonctionne pas
- Quand je tente de charger un autre fichier SWF créé sur PC, ça fonctionne parfaitement bien ...

Qui peut m'expliquer la différence entre les fichiers SWF MAC et PC ??

Qui peut m'aider à résoudre mon problème, c'est à dire, pouvoir charger dans une animation, une autre animation au format SWF ??

Merci pour vos réponses
Simach
 

fissunix

Membre confirmé
12 Avril 2004
290
17
37
Fribourg (CH)
www.contesse.ch
simach a dit:
Qui peut m'expliquer la différence entre les fichiers SWF MAC et PC ??

Hello,

Je ne sais pas si c'est ça, mais c'est peut-être une question de casse ? As-tu contrôlé les noms que tu utilises dans l'instruction loadMovie() ?

J'ai aussi switché Flash PC -> Mac il y a une année, je n'avais pas eu ce problème...

Bon apétit !
 

simach

Membre junior
3 Mars 2005
55
2
54
fissunix a dit:
une question de casse ?

J'ai aussi switché Flash PC -> Mac il y a une année, je n'avais pas eu ce problème...

Non, je ne pense pas que ce soit un problème de Casse, j'ai bien fait attention au nom du SWF que j'appelai. C'est seulement quand j'ai vu qu'il ne se loadait pas que j'ai essayé de loader un fichier SWF que j'avais créé précedemment sur PC et qui lui a fonctionné !

Ce qui est étrange c'est que dans le FINDER, les 2 fichiers, qui sont des SWF n'apparaissent pas pareil ... celui créé sous MAC (qui ne marche pas) à une application liée (icone de lecteur flash), l'autre créé sous PC n'a aucune application liée (l'icone est blanche)

Peut-être que pour appeler un SWF version MAC je n'ai pas besoin de mettre le suffixe du fichier dans l'instruction LoadMovie ...???

Fissunix ... as-tu déjà encapsulé 2 animations flash ?? Si oui, j'aimerai bien savoir comment tu as procédé ...

Merci d'avance
Simach
 

jeanba3000

Vétéran
Club MacG
28 Février 2001
5 002
413
15 mn du Pascalou
www.jeanba.net
J'ai jamais eu de souci avec les loadMovie, mettons tu as principal.swf et second.swf et ce code sur la première frame de principal.swf :

this.loadMovieNum("second.swf",1) va charger second.swf en niveau 1 de principal.swf

this.loadMovie("second.swf",cible_mc) va charger second.swf dans le movieClip cible_mc de principal.swf

On peut difficilement faire plus simple, je ne vois pas d'où pourrait venir le problème.
 

simach

Membre junior
3 Mars 2005
55
2
54
Yes je sais ... ça parait super simple et d'autant plus que le problème ne s'est jamais posé quand je bossais sur mon pc !

Je note l'exemple de jeanba3000 et j'essaierai ce soir de comprendre pourquoi ça ne marche pas !!

Merci à vous !
Simach
 

tatouille

Vétéran
1 Juin 2004
5 174
494
Stanford CA
simach a dit:
Yes je sais ... ça parait super simple et d'autant plus que le problème ne s'est jamais posé quand je bossais sur mon pc !

Je note l'exemple de jeanba3000 et j'essaierai ce soir de comprendre pourquoi ça ne marche pas !!

Merci à vous !
Simach
parfois des fichiers fla beug

pour corriger ce problème il faut exporter toute ta bibliothèque dans un fla vide
( save as ne corrige pas le problème )

il est possible aussi que tu es des symboles altérés genre bmp

mais théoriquement il n'y a pas de problème avec les swf

c'est plutot les fichiers fla qui ont un problème

sinon fait comme moi amuse toi avec ming

( cela fera partie du prochain package de scripts de demos pour la 0.3 finale ... pour les mingueurs )

Bloc de code:
<?PHP

$html="<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
    <head>
        <meta http-equiv=content-type content=\"text/html;  charset=iso-8859-1\">
        <title>gd+ming</title>
        <style type=\"text/css\">
        .localbody{background-color:#000;}
        </style>
    </head>
    <body class=\"localbody\">
        <div align=\"center\">
            <br>
            <object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" width=\"300\" height=\"150\" id=\"gd+ming\" align=\"\">
                <param name=movie value=\"gd+ming.php?view_swf=1\">
                <param name=quality value=high>
                <param name=scale value=exactfit>
                <param name=bgcolor value=#FFFFFF>
                <embed src=\"gd+ming.php?view_swf=1\" quality=high scale=exactfit bgcolor=#FFFFFF width=\"300\" height=\"150\" name=\"gd+ming\" align=\"\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"></embed>

            </object><br>
        </div>
    </body>
</html>";

if(!$_GET['view_swf'])
{
    //print html page
    echo $html;
    
}else if($_GET['view_swf']==1)
{

    if(!extension_loaded('ming'))
    {
        dl('php_ming.so');
    }
    
    if(!extension_loaded('gd'))
    {
        dl('php_gd.so');
    }
    
    // GD methods
    $PNG_1='./square.png'; 
    $PNG_2=ImageCreateFromPNG($PNG_1);
    
    $width=imagesx($PNG_2);
    $height=imagesy($PNG_2);
    
    $colors_obj=ImageCreateTrueColor($width,$height);
    ImageCopyMerge($colors_obj,$PNG_2,0,0,0,0, $width,$height,100);
    ImageTrueColorToPalette($PNG_2,true,256);
    ImageColorMatch($colors_obj,$PNG_2);
    
    // create /tmp/spider_transparent.png
    $mask=ImageColorClosest($PNG_2,0,0,0);
    ImageColorTransparent($PNG_2,$mask);
    Imagepng($PNG_2,"/tmp/square_transparent.png");
    
    
    // Ming methods
    Ming_setScale(20.0);
    ming_useswfversion(6);
    $mov=new SWFMovie();
    $mov->setDimension($width*2,$height);
    $mov->setBackground(255,255,255);
    $mov->setRate(31);
    
    $BMPshape=new SWFBitmap(fopen("./square.png","rb"));
    $BMPsprite=new SWFSprite();
    $BMPsprite->add($BMPshape);
    $BMPsprite->nextFrame();
    $BMPclip=$mov->add($BMPsprite);
    $BMPclip->moveTo(0,0);
    $BMPclip->setName("square_mc");
    
    // load bitmap to clip
    $BMPshape=new SWFBitmap(fopen("/tmp/square_transparent.png","rb"));
    $BMPsprite=new SWFSprite();
    $BMPsprite->add($BMPshape);
    $BMPsprite->nextFrame();
    
    // set bitmap sprite to clip
    $BMPclip=$mov->add($BMPsprite);
    $BMPclip->moveTo($width,0);
    $BMPclip->setName("square_transparent_mc");
    
    /////// mxFlash 6 actionscript ///////
    $ActionScript="
    
    // AS only
    _root.sound_mp3_mc=new Sound();
    _root.sound_mp3_mc.loadSound(\"./bip.mp3\",false);
    
    _root.createEmptyMovieClip(\"square_small_mc\",1);
    
    _root.square_small_mc.createEmptyMovieClip(\"img_mc\",2);
    _root.square_small_mc.img_mc.loadMovie(\"./square_small.jpeg\");
    
    _root.onEnterFrame=function()
    {
        if (_root.square_small_mc._width>0)
        {
            delete _root.onEnterFrame;
            _root.square_small_mc._x=110;
            _root.square_small_mc._y=90;
        }
    };
    
    _root.square_small_mc.onPress=function()
    {
        this._alpha=50;
        this.startDrag('');
    };
    
    _root.square_small_mc.onRelease=function()
    {
        this._alpha=100;
        this.stopDrag('');
    };
    
    
    // Ming SWFSprite square_transparent_mc
    _root.square_transparent_mc.onPress=function()
    {
        _root.sound_mp3_mc.start();
        this._alpha=50;
        _root.square_small_mc._x=190;
        _root.square_mc._alpha=80;
        this.startDrag('');
    };
    
    _root.square_transparent_mc.onRelease=function()
    {
        _root.sound_mp3_mc.stop();
        this._alpha=100;
        this._x=150;
        this._y=0;
        _root.square_small_mc._x=110;
        _root.square_small_mc._y=90;
        _root.square_mc._alpha=100;
        this.stopDrag('');
    };
    
    ";
    
    $mov->add(
            new SWFAction(
                    $ActionScript
                )
        );
    
    header('Content-type: application/x-shockwave-flash');
    $mov->output();
    
    ImageDestroy($PNG_2);
    imagedestroy($colors_obj);
    unlink('/tmp/square_transparent.png');
}
?>
 

simach

Membre junior
3 Mars 2005
55
2
54
Bon ... après quelques tests, je progresse mais ce n'est pas encore ça ....

En fait, c'est Tatouille ... qui semble confirmer ce que je viens de constater :
- on dirait que c'est le fichier .fla qui pose problème

En effet, le fichier .fla que j'utilise pour créer mon animation à encapsuler est un ancien .fla créé sur PC (avec le code actionscript à l'extérieur par l'instruction #include)
- Le fichier .swf généré à partir de ce fichier, ne s'affiche pas quand on veut le LOADER dans un clip principal

J'ai donc créé de toute pièce un nouveau .fla, semblable au premier, avec toujours un coding actionscript à l'extérieur, et j'ai regénéré le fichier .swf et là ... miracle ce .swf apparait bien quand on l'encapsule dans un premier clip ...

Mais le hic, c'est que l'animation du .swf encapsulé ne démarre pas ...
Alors que le double-clique sur le .swf seul fonctionne ... (j'ai voulu créer en fait un calendrier avec une horloge qui évolue chaque seconde)

Je peux envoyer mon fichier .swf à qui voudrait bien me montrer comment l'encapsuler dans une autre animation ...

Merci à vous ....
Simach

ps : c'est quoi "ming" ?
 

simach

Membre junior
3 Mars 2005
55
2
54
:( Là vraiment je ne pige pas pourquoi ça ne veut pas fonctionner ...

Voici un exemple super simple qui ne fonctionne toujours pas

Ma première animation premier.swf contient :
- un clip 'monclip' dans lequel je veux faire apparaïtre ma seconde animation
- un clip 'action' qui contient le code actionscript suivant :
onClipEvent (load) {
_root["monclip"].loadMovie("second.swf")
}

Ma seconde animation second.swf contient :
- une zone texte 'txt_compteur'
- un clip 'action' qui contient le code action script suivant :
onClipEvent (load) {
cpt = 0
}
onClipEvent (enterFrame) {
cpt += 1
_root.txt_compteur = 'compteur :-' + cpt + '-'
}

Y'a pas plus simple :
- L'animation "second.swf" fonctionne parfaitement bien, on voit bien apparaittre le compteur évolué d'une unité à chaque image
- L'animation Premier.swf charge bien l'animation 'Second.swf' dans le clip 'monclip' mais hélas le compteur ne fonctionne pas ... (l'animation se charge mais ne se lance pas !)

Je suis sûr que le problème doit être GROS comme une maison ... y'a surement un paramètre que je n'ai pas vu ...

Plizzz ....

Merci à tous pour vos tuyaux ...
Simach
 

jeanba3000

Vétéran
Club MacG
28 Février 2001
5 002
413
15 mn du Pascalou
www.jeanba.net
Hmm trop facile de se moquer des béotiens :p ;)

Bon, Simach, comme très souvent, quand ça ne marche pas, c'est parceque les chemins vers des objets dans les actions ne sont pas bons.

On ne va pas te mâcher tout le travail car ça ne serait pas te rendre service, il faut que tu progresses un peu par toi-même pour bien intégrer une certaine vigilance et une certaine logique. Bref visualise bien la structure de ton flash et vérifie les chemins vers tes objets ciblés par tes actions, et la lumière jaillira ! ;)
 

tatouille

Vétéran
1 Juin 2004
5 174
494
Stanford CA
jeanba3000 a dit:
Hmm trop facile de se moquer des béotiens :p ;)

Bon, Simach, comme très souvent, quand ça ne marche pas, c'est parceque les chemins vers des objets dans les actions ne sont pas bons.

On ne va pas te mâcher tout le travail car ça ne serait pas te rendre service, il faut que tu progresses un peu par toi-même pour bien intégrer une certaine vigilance et une certaine logique. Bref visualise bien la structure de ton flash et vérifie les chemins vers tes objets ciblés par tes actions, et la lumière jaillira ! ;)
tu fréquentes biogenetix ...
on doit s'être croisé
c'est rigolo

c'est moins exitant qu'avant c'est quand même un survival d'un truc qui était bien

ha j'oubliais mon lien était sérieux

Cours 03 Chemins relatifs et absolus entre objets et variables
 

simach

Membre junior
3 Mars 2005
55
2
54
Merci pour le lien sur les cours ActionScript ...

Mais malgré mon 'peu de vigilance' et ma 'logique incertaine' ;) , le problème que je rencontre n'est pas un problème de 'CHEMIN PAS BON',
Ma PREMIERE animation charge bien la SECONDE animation (le chemin est bien bon) mais celle-ci ne démarre pas (alors qu'elle fonctionne parfaitement bien en autonome)

Bon ok ... je crois que je vais aller faire un tour à la Fnac m'acheter un pavé sur Flash MX (Colin Moock c'est ça la référence !!?)

Merci à vous
Simach
 

jeanba3000

Vétéran
Club MacG
28 Février 2001
5 002
413
15 mn du Pascalou
www.jeanba.net
Tout à fait d'accord sur le fond avec toi, avant de venir réclamer l'aide des gens au moindre souci vraiment basique, il vaut mieux revoir voire acquérir les bases justement. Y a aussi yazo qui est pas mal pour débuter, assez pédagogue et fait par un prof des Gobelins si je me souviens bien.

Flash MX de Guylaine Monnier chez Dunod est très bien aussi.
 

jeanba3000

Vétéran
Club MacG
28 Février 2001
5 002
413
15 mn du Pascalou
www.jeanba.net
Ah oui vraiment ? Moi je vois déjà ça :

simach a dit:
Ma première animation premier.swf contient :
- un clip 'monclip' dans lequel je veux faire apparaïtre ma seconde animation
- un clip 'action' qui contient le code actionscript suivant :
onClipEvent (load) {
_root["monclip"].loadMovie("second.swf")
}

Ma seconde animation second.swf contient :
- une zone texte 'txt_compteur'
- un clip 'action' qui contient le code action script suivant :
onClipEvent (load) {
cpt = 0
}
onClipEvent (enterFrame) {
cpt += 1
_root.txt_compteur = 'compteur :-' + cpt + '-'
}

Peut-être qu'avec _root.monclip.txt_compteur ça marcherait mieux... Donc c'est bien une histoire de chemin très basique. ;)

Allez hop au boulot et avec un peu plus d'attention, interro écrite la semaine prochaine sur les occurences et leur ciblage dans Flash. :p
 

simach

Membre junior
3 Mars 2005
55
2
54
jeanba3000 a dit:
Peut-être qu'avec _root.monclip.txt_compteur ça marcherait mieux... Donc c'est bien une histoire de chemin très basique. ;)

Yes .... ça fonctionne maintenant ... merci à jeanba3000 qui m'a mis sur la piste malgré que je ne comprenne pas sa solution avec "_root.monclip.txt_compteur"
En effet, monclip est un clip de la première animation, il n'est donc pas censé être connu de la seconde animation ...!! j'ai bon là ... ??? ;)


J'ai adopté la solution suivante avec : "_parent.txt_compteur" au lieu de "_root.txt_compteur" et là ... zouh ... la première animation charge la seconde qui voit le compteur défilé ... le rêve ....

En fait, comme ça faisait presque un an que je n'avais pas touché à Actionscript, faut jamais se relacher apparemment ...

Mon livre de chevet est maintenant "Le meilleur d'actionscript 2.0 de Colin Moock" ... Y'a Plus Ka ...

Merci encore pour les pistes ...
Simach :up:
 

jeanba3000

Vétéran
Club MacG
28 Février 2001
5 002
413
15 mn du Pascalou
www.jeanba.net
simach a dit:
Yes .... ça fonctionne maintenant ... merci à jeanba3000 qui m'a mis sur la piste malgré que je ne comprenne pas sa solution avec "_root.monclip.txt_compteur"
En effet, monclip est un clip de la première animation, il n'est donc pas censé être connu de la seconde animation ...!! j'ai bon là ... ??? ;)

Pas exactement, du moins tu ne sembles pas bien comprendre cette notion de chemin.

Tu as une première animation qui contient un movie clip dans lequel tu charges une autre animation qui contient un champ de texte, donc le chemin qui mène à ce champ est racine de la première animation > le movie clip qu'elle contient > le champ de texte, tout connement.

donc _root.movieClip.champDeTexte, ou _level0.movieClip.champDeTexte puisqu'il s'agit de l'animation principale.

_parent est encore une autre manière de circuler dans la structure d'un flash, mais tu ne sembles pas l'utiliser en "connaissance de cause", plutôt au pif. Bref ça marche sans que tu l'aies fait exprès et ça n'est pas ce qu'on peut appeler maîtriser son sujet.

Pour l'AS2 tu vas t'amuser, la programmation orientée objet est parfois... désorientante quand on a déjà des (mauvaises) habitudes en programmation. Néanmoins c'est bien d'être ambitieux et je te souhaite bon courage.
 

simach

Membre junior
3 Mars 2005
55
2
54
jeanba3000 a dit:
Tu as une première animation qui contient un movie clip dans lequel tu charges une autre animation qui contient un champ de texte, donc le chemin qui mène à ce champ est racine de la première animation > le movie clip qu'elle contient > le champ de texte, tout connement.
donc _root.movieClip.champDeTexte, ou _level0.movieClip.champDeTexte puisqu'il s'agit de l'animation principale.
.

Bien ... les explications sont clairs et précises ...

Mais ... désolé mais je ne comprends toujours pas comment je peux écrire "_root.monclip.txt_compteur" dans ma seconde animation alors que cette animation peut très bien être chargée par une autre animation, dans un autre clip, qui lui ne s'appellera pas 'monclip'. Ma seconde animation ne connait pas 'monclip' et heureusement ...

Concernant l'utilisation de "_parent", j'ai fouillé dans tous les exemples que j'ai créés d'animations qui appellent d'autres animations et je me suis aperçu que j'avais déjà réglé ce type de problème, il y a quelques mois ... juste un oubli ... oups ... En fait, je n'ai pas beaucoup d'exemples d'encapsulage d'animations dont l'animation encapsulée contient du code actionscript (c'est pour ça que je n'avais pas le problème ...)

Concernant la POO et bien ... boulot oblige ... va falloir que je m'y mette sérieux, en espérant prendre de "bonnes" habitudes de programmation sinon j'vais encore me faire 'gronder' dans le forum dès que je poserai une question ... aussi basique soit-elle ..;)

Merci encore pour les réponses
Simach