Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

Résolu
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 22 déc. 2009 à 14:47
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 - 29 déc. 2009 à 15:53
Bonjour à toutes et à tous,

j'ai modifié un script de Carroussel qui fonctionne via un xml, lorsqu'on clique sur une des images du carroussel cela attache un clip sur la scène, j'aimerai qu'une fois que le clip est chargé sur la scène, il ne soit plus possible de charger le même clip sur la scène.
L'action pour charger les clips en cliquant sur les images du carroussel est la fonction "function released()", alors comment dois-je m'y prendre pour "bloquer" le chargement des clips ? Dois-je bloquer la fonction ?

Voici mon script pour que ce soit plus parlant :
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 180;
var radiusY:Number = 75;
var centerX:Number = 900;
var centerY:Number = 150;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;

var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;

xml.onLoad = function()
{
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
for(var i=0;i<numOfItems;i++)
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = over;
t.icon.onRollOut = out;
t.icon.onRelease = released;
t.image = nodes[i].attributes.image;
}
}

function over()
{
home.tooltip.tipText.text = this._parent.toolText;
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
home.tooltip._alpha = 100;
}

function out()
{
delete home.tooltip.onEnterFrame;
home.tooltip._alpha = 0;
}

function released()
{
trace(this._parent.image);
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
if (this._parent.image == "carroussel/disque.png"){
removeMovieClip("projet");
removeMovieClip("animation");
removeMovieClip("contact");
removeMovieClip("graphisme");
removeMovieClip("tarifs");
var clip:MovieClip = this._root.attachMovie("IDjukebox","jukebox",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_jukebox.onPress = function() {
this._parent.removeMovieClip();
}
}else if (this._parent.image == "carroussel/animation.png"){
removeMovieClip("projet");
removeMovieClip("contact");
removeMovieClip("tarifs");
removeMovieClip("graphisme");
removeMovieClip("jukebox");
var clip:MovieClip = this._root.attachMovie("IDanimation","animation",getNextHighestDepth()+1,{_x:600,_y:480});
    clip.close_animation.onPress = function() {
this._parent.removeMovieClip();
}
}else if (this._parent.image == "carroussel/graphisme.png"){
removeMovieClip("projet");
removeMovieClip("jukebox");
removeMovieClip("contact");
removeMovieClip("tarifs");
removeMovieClip("animation");
var clip:MovieClip = this._root.attachMovie("IDgraphisme","graphisme",getNextHighestDepth()+1,{_x:300,_y:400});
    clip.btnclose.onPress = function() {
this._parent.removeMovieClip();
}
}else if (this._parent.image == "carroussel/mail.png"){
removeMovieClip("graphisme");
removeMovieClip("jukebox");
removeMovieClip("animation");
removeMovieClip("projet");
removeMovieClip("tarifs");
var clip:MovieClip = this._root.attachMovie("IDcontact","contact",getNextHighestDepth()+1,{_x:330,_y:380});
    clip.close_contact   .onPress = function() {
this._parent.removeMovieClip();
}
}else if (this._parent.image == "carroussel/cadenas.png"){
removeMovieClip("animation");
removeMovieClip("jukebox");
removeMovieClip("contact");
removeMovieClip("graphisme");
removeMovieClip("tarifs");
var clip:MovieClip = this._root.attachMovie("IDprojet","projet",getNextHighestDepth()+1,{_x:626,_y:450});
    clip.close_projet.onPress = function() {
this._parent.removeMovieClip();
}
}else if (this._parent.image == "carroussel/tarif.png"){
removeMovieClip("projet");
removeMovieClip("contact");
removeMovieClip("animation");
removeMovieClip("jukebox");
removeMovieClip("graphisme");
var clip:MovieClip = this._root.attachMovie("IDtarifs","tarifs",getNextHighestDepth()+1,{_x:300,_y:400});
    clip.btnclose.onPress = function() {
this._parent.removeMovieClip();
}
}
}

function moveTip()
{
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
}

xml.load("icons.xml");

function mover()
{
this._x = Math.cos(this.angle) * radiusX + centerX;
this._y = Math.sin(this.angle) * radiusY + centerY;
var s = (this._y - perspective) /(centerY+radiusY-perspective);
this._xscale this._yscale s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/10000;
}

stop();


Merci d'avance pour vos lumières.

BBFUNK01

14 réponses

cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
22 déc. 2009 à 16:33
Salut,
une solution serait par exemple de stocker dans un tableau la référence de tous les clips chargés sur la scène. Ensuite lorsque tu veux en charger un, tu vérifie s'il n'est pas déjà présent dans ce tableau.


bali_balo....=]
3
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
22 déc. 2009 à 17:09
Ok, donc d'après toi il faut que je me renseigne du côté de "array" ?
Est-ce que tu as une idée ou un lien qui pourrait m'aider pour la mise en forme s.t.p. ? Je n'ai encore jamais utilisé "array" dans Flash.

Merci pour ta réponse rapide en tout cas !

BBFUNK01
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
22 déc. 2009 à 17:34
le plus simple serait de consulter la doc en ligne : http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/js/html/wwhelp.htm
Tu auras toute les réponses à tes questions :)

bali_balo....=]
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
22 déc. 2009 à 17:37
OK, c'est noté. Merci pour le tuyau ! :)

BBFUNK01
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
23 déc. 2009 à 14:09
Salut Bali-Balo,

bon j'ai regardé sur la doc en ligne de Flash ainsi que sur d'autres liens trouvés sur Google, et je t'avoue que je suis un peu largué. Est-ce que tu peux m'aiguiller un peu stp sur la manière d'arranger mon code ?

Dois-je placer mon "array" avant ma fonction "function released()", ou après ?
Dois-je dire à Flash : "en cliquant sur une des images, ça range le clip rattaché à cette image dans le tableau, donc ensuite si je reclique sur cette image, le tableau analyse les clips chargés dans le tableau et empêche le chargement d'un 2ème clip identique" ?

Sinon, j'avais pensé faire un truc différent : après le script qui charge le clip dans ma "function released()", insérer une condition qui dirait : "attachMovie("mon clip") enabled = false", mais comme mes clips ont un nom de liaison et pas de nom d'occurence je ne sais pas si c'est possible, et je ne sais pas non plus si ça peut marcher. Qu'est-ce que tu en penses ?

Merci,

BBFUNK01
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
23 déc. 2009 à 15:23
je te réponds dans la soirée


bali_balo....=]
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
23 déc. 2009 à 16:34
OK, ça marche. Merci beaucoup car étant encore débutant en flash, là pour moi c'est du lourd.

A tout à l'heure.

BBFUNK01
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
24 déc. 2009 à 00:52
Re Bali-Balo,

j'ai essayé de modifier mon de script en supprimant la "function released()" et en la remplaçant par la "function define()", le but étant de définir chaque image du Carroussel comme un bouton unique afin de pouvoir ensuite mettre un "btn.enabled = false;" dessus pour éviter le chargement d'autres clips identiques.
Malheureusement ça ne marche pas, après est-ce que tu penses que l'idée de départ est bonne ?

Voici mon script :
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 180;
var radiusY:Number = 75;
var centerX:Number = 900;
var centerY:Number = 150;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;

var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;

xml.onLoad = function()
{
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
for(var i=0;i<numOfItems;i++)
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = over;
t.icon.onRollOut = out;
t.icon.onRelease = define;
t.image = nodes[i].attributes.image;
}
}

function over()
{
home.tooltip.tipText.text = this._parent.toolText;
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
home.tooltip._alpha = 100;
}

function out()
{
delete home.tooltip.onEnterFrame;
home.tooltip._alpha = 0;
}

function define(){
if (this._parent.image == "carroussel/disque.png"){
t.icon.onRelease = btn_jukebox;
}else if (this._parent.image == "carroussel/animation.png"){
t.icon.onRelease = btn_animation;
}else if (this._parent.image == "carroussel/graphisme.png"){
t.icon.onRelease = btn_graphisme;
}else if (this._parent.image == "carroussel/mail.png"){
t.icon.onRelease = btn_contact;
}else if (this._parent.image == "carroussel/cadenas.png"){
t.icon.onRelease = btn_projet;
}else if (this._parent.image == "carroussel/tarif.png"){
t.icon.onRelease = btn_tarifs;
}
}

btn_jukebox.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("projet");
removeMovieClip("animation");
removeMovieClip("contact");
removeMovieClip("graphisme");
removeMovieClip("tarifs");
btn_jukebox.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDjukebox","jukebox",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_jukebox.onPress = function(){
this._parent.removeMovieClip();
btn_jukebox.enabled = true;
}
}

btn_animation.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("projet");
removeMovieClip("contact");
removeMovieClip("tarifs");
removeMovieClip("graphisme");
removeMovieClip("jukebox");
btn_animation.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDanimation","animation",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_animation.onPress = function(){
this._parent.removeMovieClip();
btn_animation.enabled = true;
}
}

btn_graphisme.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("projet");
removeMovieClip("jukebox");
removeMovieClip("contact");
removeMovieClip("tarifs");
removeMovieClip("animation");
btn_graphisme.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDgraphisme","graphisme",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_graphisme.onPress = function(){
this._parent.removeMovieClip();
btn_graphisme.enabled = true;
}
}

btn_contact.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("graphisme");
removeMovieClip("jukebox");
removeMovieClip("animation");
removeMovieClip("projet");
removeMovieClip("tarifs");
btn_contact.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDcontact","contact",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_contact.onPress = function(){
this._parent.removeMovieClip();
btn_contact.enabled = true;
}
}

btn_projet.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("animation");
removeMovieClip("jukebox");
removeMovieClip("contact");
removeMovieClip("graphisme");
removeMovieClip("tarifs");
btn_projet.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDprojet","projet",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_projet.onPress = function(){
this._parent.removeMovieClip();
btn_projet.enabled = true;
}
}

btn_tarifs.onRelease = function(){
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
removeMovieClip("projet");
removeMovieClip("contact");
removeMovieClip("animation");
removeMovieClip("jukebox");
removeMovieClip("graphisme");
btn_tarifs.enabled = false;
var clip:MovieClip = this._root.attachMovie("IDtarifs","tarifs",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_tarifs.onPress = function(){
this._parent.removeMovieClip();
btn_tarifs.enabled = true;
}
}

function moveTip()
{
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
}

xml.load("icons.xml");

function mover()
{
this._x = Math.cos(this.angle) * radiusX + centerX;
this._y = Math.sin(this.angle) * radiusY + centerY;
var s = (this._y - perspective) /(centerY+radiusY-perspective);
this._xscale this._yscale s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/10000;
}


Merci,

BBFUNK01
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
24 déc. 2009 à 10:20
Oupss chté un peu oublié ^^
Ce midi si j'ai le temps.


bali_balo....=]
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
24 déc. 2009 à 12:13
Y'a pas de souci, je me doute bien qu'un 24 décembre tu as d'autres choses à faire que de te pencher sur mon problème :)
De mon côté je continue à chercher des solutions, mais j'avoue volontiers que je ne serai pas contre un petit coup de main.

Merci,

BBFUNK01
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
26 déc. 2009 à 13:10
Salut Bali-Balo, passé un Joyeux Noël ? Moi ça a été bof... (j'ai chopé une gastro-entérite surpuissante...).
Bref, je voulais savoir si tu aurais éventuellement un peu de temps à m'accorder pour m'aider à modifier mon code s.t.p., tiens-moi au courant de tes disponibilités.

Merci,

BBFUNK01
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
27 déc. 2009 à 15:29
Salut Bali-Balo,

je poursuis mes investigations pour résoudre mon problème, j'ai donc créé un tableau vierge, lorsqu'on clique sur une des images du carroussel cela ajoute le nom du clip chargé dans le tableau, par contre je n'arrive pas à "bloquer" un 2ème chargement du même clip, voici mon code :
var clipload:Array = new Array();

function released()
{
trace(this._parent.image);
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
if (this._parent.image == "carroussel/disque.png"){
clipload.push ("jukebox");
trace(clipload);
removeMovieClip("projet");
removeMovieClip("animation");
removeMovieClip("contact");
removeMovieClip("graphisme");
removeMovieClip("tarifs");
var clip:MovieClip = this._root.attachMovie("IDjukebox","jukebox",getNextHighestDepth()+1,{_x:600,_y:440});
clip.close_jukebox.onPress = function() {
this._parent.removeMovieClip();
clipload.shift();
}
}else if (this._parent.image == "carroussel/disque.png" && clipload.toString("jukebox")){
clipload.shift();
}


Est-ce que tu vois quelque chose d'incorrect dans mon script ?

Merci,

BBFUNK01
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
28 déc. 2009 à 11:57
Vraiment désolé, comme tu l'as dit comme c'est les fêtes en ce moment j'ai un peu zappé FlashKod.
Je vais y jeter un coup d'oeil cette aprèm ;)


bali_balo....=]
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
29 déc. 2009 à 15:53
euuhh si je ne te réponds pas ce soir oubli moi... Chui pas mal occupé en ce moment. Je ferais un dernier effort ce soir ^^


bali_balo....=]
0
Rejoignez-nous