Ouah, merci pour toutes ces infos et le code.
Je suis pas la ce week end mais dès que je rentre je vais essayer ça.
Sinon hier soir j'ai essayer de faire une qui envoie ... le code sera plus
explicite ;) :


class CustomMC extends MovieClip
{
    private var _lastFrame:Number = 0;
    private var _wasPlaying:Boolean = false;

    public function CustomMC() {
        super();
        this.onEnterFrame = function() {
            if (_currentframe !== _lastFrame && !_wasPlaying) {
                MCCommande.playingMC(this);
            } else if(_currentframe === _lastFrame && _wasPlaying) {
                MCCommande.noPlayingMC(this);
            }
        }
    }
}

J'ai lier tous les clips à cette classe avec un jsfl , et MCCommande gère la
mise en pause et la mise en lecture.
Comme ça n'a pas marché aussi bien que ce que je prévoyais .... je suis
partie me coucher.

Sur ce à lundi et encore merci pour toute l'aide que tu peux apporter sur
cette mailing list.

bon week-end

Le 23 octobre 2009 09:04, ekameleon <[email protected]> a écrit :

> Hello :)
>
> Oui :) sinon il faut créer une classe qui va prendre la main sur tes clips
> dans ton code par composition (au lieu d'héritage) et dans ce cas tu peux
> créer une "super armure" autour de tes clips pour leur donner des nouvelles
> fonctionnalités. Tu peux utiliser pour cela une classe qui hérite de la
> classe Proxy (en AS3) pour éviter à te retaper toutes les méthodes du clip
> et tu auras juste à redéfinir les propriétés et méthodes importantes.
>
> Faudrais tenter un code du style :
>
> package
> {
>     import flash.display.MovieClip;
>     import flash.utils.Proxy;
>     import flash.utils.flash_proxy;
>
>     public class ProxyMovieClip extends Proxy
>     {
>         public function ProxyMovieClip( target:MovieClip )
>         {
>             _mc = target ;
>         }
>
>         public function isPlaying():Boolean
>         {
>             return _isPlaying ;
>         }
>
>         public function get target():MovieClip
>         {
>             return _mc ;
>         }
>
>         public function gotoAndPlay( frame:Object, scene:String = null
> ):void
>         {
>             _mc.gotoAndPlay( frame , scene ) ;
>             _isPlaying = true ;
>         }
>
>         public function gotoAndStop( frame:Object, scene:String = null
> ):void
>         {
>             _mc.gotoAndStop( frame , scene ) ;
>             _isPlaying = true ;
>         }
>
>         public function play():void
>         {
>             _mc.play() ;
>             _isPlaying = true ;
>         }
>
>         public function stop():void
>         {
>             _mc.stop() ;
>             _isPlaying = false ;
>         }
>
>         protected var _mc:MovieClip ;
>
>         protected var  _isPlaying:Boolean ;
>
>         ////////////// proxy
>
>         flash_proxy override function callProperty( methodName:*  ,
> ...rest:Array ):*
>         {
>             var res:* ;
>             switch ( methodName.toString() )
>             {
>                 default :
>                 {
>                     res = _mc[methodName].apply(_mc, rest);
>                     break;
>                 }
>             }
>             return res ;
>         }
>
>         flash_proxy override function getProperty( name:* ):*
>         {
>             return _mc[name];
>         }
>
>         /**
>          * Overrides a call to change a property's value.
>          * If the property can't be found, this method creates a property
> with the specified name and value.
>          * @param name The name of the property to modify.
>          * @param value The value to set the property to.
>          */
>         flash_proxy override function setProperty( name:* , value:* ):void
>         {
>             _mc[name] = value ;
>         }
>     }
> }
>
> J'ai pas testé donc je peux pas t'assurer que tout fonctionne dans le code
> au dessus ;) Maintenant suffit de modifier ta propriété virtuelle isPlaying
> avec un setter qui te permettra pourquoi pas de stocker dans un "locator"
> singleton tous les "super clips" qui sont en train d'être lu :)
>
> EKA+ :)
>
> Le 23 octobre 2009 00:30, samuel <[email protected]> a écrit :
>
> Oui pardon : la version du langage n'a pas d'importance.
>> En gros tu me conseille de lier tous les clips de la bliothèque à une
>> classe custom ?
>>
>>
>> Le 23 octobre 2009 00:20, ekameleon <[email protected]> a écrit :
>>
>> Hello :)
>>>
>>> En AS2 ou AS3 ou AS1 ??? tu peux être plus précis :) merci ;)
>>>
>>> Le mieux je pense c'est de créer une classe custom qui hérite de
>>> MovieClip qui te permettra d'overrider les méthodes play() / stop() /
>>> gotoAndStop() / gotoAndPlay() de ton clip et du coup de lui ajouter des
>>> fonctionnalités pour savoir si le clip est en cours ou pas ?
>>>
>>> Je pense que ce sera moins lourd que de tester en temps réelle un
>>> changement au niveau de leurs propriétés currentFrame ??
>>>
>>> Donc ensuite suffit que ta classe qui hérite de MovieClip tu l'attaches à
>>> ton clip dans la bibliothèque dans les paramètres de liaison et le tour est
>>> joué :)
>>>
>>> Pour couper ensuite tous tes clips.. tu peux avec la même technique
>>> d'héritage tu peux injecter une méthode qui permettra à tout moment quand tu
>>> lances un clip de savoir qu'il est en lecture et du coup d'énumérer un Array
>>> ou autre Vector de tes clips et de les arrêter :)
>>>
>>> EKA+ :)
>>>
>>> Le 23 octobre 2009 00:15, sam <[email protected]> a écrit :
>>>
>>>
>>>> Bonsoir,
>>>> J'ai une anim avec plusieurs clips imbriqué les uns dans les autre
>>>> (certains avec du son),
>>>> J'essaie de faire 2 boutons pour arréter et reprendre l'animation à
>>>> tout moment.
>>>> Est-ce qu'il y aurait une méthode pour détecter tous les clips entrain
>>>> de jouer, pouvoir les stopper et reprendre leur lecture ?
>>>> Ca pourra pas mal m'aider
>>>> merci
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de 
Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/fcng?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à