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
-~----------~----~----~----~------~----~------~--~---