begin process at 2012 05 26 18:17:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Divers

 > 

Débutant(e)

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

mardi 22 décembre 2009 à 14:47:35 | Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

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 :
Code ActionScript :
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

mardi 22 décembre 2009 à 16:33:38 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

bali_balo

Réponse acceptée !
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....=]
mardi 22 décembre 2009 à 17:09:42 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

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
mardi 22 décembre 2009 à 17:34:33 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

bali_balo


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....=]
mardi 22 décembre 2009 à 17:37:36 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

OK, c'est noté. Merci pour le tuyau ! :)

BBFUNK01
mercredi 23 décembre 2009 à 14:09:40 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

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
mercredi 23 décembre 2009 à 15:23:28 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

bali_balo

je te réponds dans la soirée


bali_balo....=]
mercredi 23 décembre 2009 à 16:34:21 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

OK, ça marche. Merci beaucoup car étant encore débutant en flash, là pour moi c'est du lourd.

A tout à l'heure.

BBFUNK01
jeudi 24 décembre 2009 à 00:52:20 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

BBFUNK01

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 :
Code ActionScript :
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
jeudi 24 décembre 2009 à 10:20:52 | Re : Comment bloquer un AttacheMoveiClip une fois qu'il est sur la scène ?

bali_balo

Oupss chté un peu oublié ^^
Ce midi si j'ai le temps.


bali_balo....=]

1 2

Cette discussion est classée dans : function, var, clip, parent, removemovieclip


Répondre à ce message

Sujets en rapport avec ce message

Appel de var d'un txt dasn un movie clip [ par Burnside ] Je n'arrrive pas a faire apparaître une variable qui se trouve dans un txt dans un movie clip.Merci,Burnside mc_clip.duplicateMovieClip ???? ehehh [ par mica1 ] Hoïbon ma question est simplej'aimerais duplikatouiller une clipouille mais bon le ptit problème c'est que ce petit clipouille contient des champs de loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli help grattflash [ par dogimo ] alors voilà mon prob, ce script est superbe et je le trouve plus sympa que les petits carrés qui partent en fadeout généralement.donc voilà mon prob : Problème de _parent [ par CyberP ] J'ai créé une classe Socket en ActionScript 2Voici le nécessaire pour mon problème :class Socket { var sock:XMLSocket; function SocketManager() { s Pb de preload de site [ par ceramicord ] Bonjour, J'ai fait un site et je viens de vouloir changer mon preload. L'ancien était automatisé.J'ai donc réalisé un clip et j'ai tenter de charger Pb de code [ par Xciting ] Bonjour a tous, j essaie de me faire un tit jeu tres simple. Je vous explique le fonctionnement: Sur le flash, il y a deux lettres : une en bas et une problème player 6/player7 [ par jacknikolson ] j'ai un petit souci que je vais vous exposer.j'ai une petite anim que j'utilisais sous flash5.un clip vide avec son code :onClipEvent (load) { direc = duplicateMovieClip [ par lalelilo ] Bonjour,Je souhaite dupliquer un clip enfant contenu dans un clip parent, et que le clip enfant dupliqué soit instancié dans le clip parent. Ex :._roo


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales