AS3 removeChild: je galère...: Le DisplayObject indiqué doit être un enfant de l

cs_pisse_froid Messages postés 5 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 24 septembre 2009 - 24 sept. 2009 à 16:54
cs_pisse_froid Messages postés 5 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 24 septembre 2009 - 24 sept. 2009 à 17:07
Bonjour a tous,

sur ce lien vous pouvez télécharger mon fichier zip avec images + fla si vous voulez bien m'aider.

Alors voilà, je suis un gros bébé pleurnichard du flash.
En fait je suis plus designer que codeur, mais je joue régulièrement a l'apprenti sorcier de l'AS3 pour faire chier ma mère qui voulais que je soit poète.

Et là j'ai un problème:
J'ai trouvé le moyen d'inclure un "preloader" pour le chargement de chacune des images de ma future galerie. (en bidouillant des tutos je ne vous le cache pas)
Donc imaginez une galerie simple avec par ex 3 boutons, et que chacun des boutons fasse apparaître une image après son préloading.
Et ça marche ! -mais pas bien-
J'ai un problème avec les removeChild.
flash me dis ça:
ArgumentError: Error #2025: Le DisplayObject indiqué doit être un enfant de l'appelant.
at flash.display::DisplayObjectContainer/removeChild()
at flashpreloader_fla::MainTimeline/onrondremove()
mais ça marche quand même un peu quoi ça fait pas tout bugger.
Je sais pas ou les mettre ces removeChild.

Voilà si quelqu'un daigne s'intéresser un peu a cette mélasse, je le remercie chaleureusement d'avance et je le remercierais aussi après.


Voiçi le code :



rond.buttonMode = true;
carre.buttonMode = true;
ovale.buttonMode = true;

// là je déclare mes variables

var myUrlReqROND:URLRequest = new URLRequest("images/rond.jpg");
var myLoaderrond:Loader = new Loader();
////
var myUrlReqCARRE:URLRequest = new URLRequest("images/carre.Jpg");
var myLoadercarre:Loader = new Loader();
////
var myUrlReqOVALE:URLRequest = new URLRequest("images/ovale.jpg");
var myLoaderovale:Loader = new Loader();

[b]// ici c'est les boutons qui font en sorte que quand on appuie sur l'img rond, l'img ovale et l'img carré dégagent.
// ou quand on appuie sur l'img carré, l'img ovale et l'img rond dégagent
// MAIS CA MARCHE PAS BIEN JE CROIS QUE JE FAIS UN PEU NIMPORTE QUOI
// Je sais pas si vous avez une solution un peu plus simple.
/b
rond.addEventListener(MouseEvent.MOUSE_DOWN, onrondremove);
function onrondremove(e:MouseEvent){
removeChild(myLoadercarre);
removeChild(myLoaderovale);

carre.addEventListener(MouseEvent.MOUSE_DOWN, oncarreremove);
function oncarreremove(e:MouseEvent){
removeChild(myLoaderrond);
removeChild(myLoaderovale);

ovale.addEventListener(MouseEvent.MOUSE_DOWN, onovaleremove);
function onovaleremove(e:MouseEvent){
removeChild(myLoadercarre);
removeChild(myLoaderrond);
}
}
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//là c'est mon loader qui charge l'image avec un rond rouge

rond.addEventListener(MouseEvent.MOUSE_DOWN, onrond);
function onrond(e:MouseEvent){
myLoaderrond.load(myUrlReqROND);
myLoaderrond.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
myLoaderrond.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
myLoaderrond.contentLoaderInfo.addEventListener(Event.COMPLETE,showContent);

var myPreloader:Preloader = new Preloader();
function showPreloader(event:Event):void {
addChild(myPreloader);
myPreloader.x = stage.stageWidth/2;
myPreloader.y = stage.stageHeight/2;
}
function showProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
myPreloader.loading_txt.text = "Loading - " + Math.round(percentLoaded * 100) + "%";
myPreloader.rectbar_mc.width = 198 * percentLoaded;
}
function showContent(event:Event):void {
removeChild(myPreloader);
addChild(myLoaderrond);
myLoaderrond.x = 250;
myLoaderrond.y = 250;
}
}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//là c'est mon loader qui charge l'image avec un carré sur david hasselof

carre.addEventListener(MouseEvent.MOUSE_DOWN, oncarre);
function oncarre(e:MouseEvent){

myLoadercarre.load(myUrlReqCARRE);
myLoadercarre.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
myLoadercarre.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
myLoadercarre.contentLoaderInfo.addEventListener(Event.COMPLETE,showContent);

var myPreloader:Preloader = new Preloader();

function showPreloader(event:Event):void {
addChild(myPreloader);
myPreloader.x = stage.stageWidth/2;
myPreloader.y = stage.stageHeight/2;
}

function showProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
myPreloader.loading_txt.text = "Loading - " + Math.round(percentLoaded * 100) + "%";
myPreloader.rectbar_mc.width = 198 * percentLoaded;
}

function showContent(event:Event):void {
removeChild(myPreloader);
addChild(myLoadercarre);


}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//là c'est mon loader qui charge l'image avec ovale noir

ovale.addEventListener(MouseEvent.MOUSE_DOWN, onovale);
function onovale(e:MouseEvent){

myLoaderovale.load(myUrlReqOVALE);
myLoaderovale.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
myLoaderovale.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
myLoaderovale.contentLoaderInfo.addEventListener(Event.COMPLETE,showContent);

var myPreloader:Preloader = new Preloader();

function showPreloader(event:Event):void {
addChild(myPreloader);
myPreloader.x = stage.stageWidth/2;
myPreloader.y = stage.stageHeight/2;
}

function showProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
myPreloader.loading_txt.text = "Loading - " + Math.round(percentLoaded * 100) + "%";
myPreloader.rectbar_mc.width = 198 * percentLoaded;
}

function showContent(event:Event):void {
removeChild(myPreloader);
addChild(myLoaderovale);


}
}

2 réponses

cs_pisse_froid Messages postés 5 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 24 septembre 2009
24 sept. 2009 à 17:05
Je sais pas pourquoi j'ai l'impression que mon lien marche pas.
Celui ci marche :
lien zip ac fla+img

merci!
+
0
cs_pisse_froid Messages postés 5 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 24 septembre 2009
24 sept. 2009 à 17:07
Ah. ok, il faut juste rajouter .zip ou .rar sur le fichier.
0
Rejoignez-nous