Un erreur qui me péte le crane depuis 2 jour.

Genoso Messages postés 4 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 10 septembre 2010 - 9 sept. 2010 à 16:12
jetmix Messages postés 19 Date d'inscription jeudi 3 juin 2004 Statut Membre Dernière intervention 15 septembre 2010 - 9 sept. 2010 à 17:45
Bien le bonjour à tous, il est vrai que c'est mon premier message, mais je ne fait qu'observer depuis un bon bout de temps ce forum pour me donner des idées.

Bref je viens humblement demander de l'aide, pour comprendre une erreur que je n'arrive pas a contourner...

Je mettrais en exemple un petit bout de code simple sachant que mon code principale est plutôt grand.

Tout d'abord voici l'idée de fonctionnement de l'apply.

Pour un exposition prochaine il y'aura mon animation qui tournera... le but étant d'avoir une grande zone de travail divisé en 3 parties.

J'ai 3 catégorie de clips, l'apply doit d'abord tirer au hasard le fait de prendre 1 clip ou 2 clips, puis ensuite de choisir au hasard encore dans qu'elle catégorie le/les prendre, puis encore au hasard les jouer dans leur sens premier ou d'inverser leur abscisse.
Puis de les charger sur la scène principale. (Vive les math random...)

Bref j'ai pas encore réglé tout les paramètres de sélection mais voici un extrait de code :

import randomize;

var tabcat1=new  Array("cat1clip1.swf","cat1clip2.swf","cat1clip3.swf");

function randomChooseClip (tab)
{
var d = Math.round (Math.random() * (tab.length - 1));
var chooseclip = tab[d];
tab.splice (d, 1);
return chooseclip;
}

var chooseclip = randomChooseClip(tabcat1);
trace(chooseclip);

addChild(chooseclip);


Et voici mon fichier externe randomize.as

package{

import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.net.URLRequest;


public class randomize extends MovieClip{

var clips;

public function randomize(list:Array):void{

clips=list;
charger();

}

public function charger(){
var lclip:Loader=new Loader();
lclip.load(new URLRequest(clips[0]));
this.addChild(lclip);
}

}

}


Alors l'erreur reçu à la compilation de ce code est la suivante :
TypeError: Error #1034: Echec de la contrainte de type : conversion de "cat1clip1.swf" en flash.display.DisplayObject impossible.
at RandomClipPlaying_fla::MainTimeline/frame1()


J'en ai eu de 3 type en ayant des syntaxe différente, alors soit par de conversion en display object, soit pas de conversion en display MovieClip, ou alors pas de conversion en Array.

Bref ayant retourné le soucis dans tout les sens, ayant fait des recherches un peu partout j'ai trouvé le lien suivant sur du Flex [url=Erreur semblable/url.
L'erreur y ressemble un peu, et donc le soucis serait de faire appel a plusieurs module à la fois ?

Sachant que c'est la première fois que je me lance dans un code si complexe du fait de ses 3 niveau d'aléatoire je commence à perdre les pédales x) (Etant en stage et surtout graphiste mon patron "kiffera" si j'arrive à faire marcher tout ça... oui je suis vénal, j'ai pensé à d'autre solutions, mais le résultat serait moins probant et bien sur presque pas aléatoire).

Sinon merci d'avance, et je suis prêt à en apprendre encore un peu plus pour délier ce problème avec vous :o

3 réponses

jetmix Messages postés 19 Date d'inscription jeudi 3 juin 2004 Statut Membre Dernière intervention 15 septembre 2010
9 sept. 2010 à 17:27
Bonjour,
Tu es un peu loin du compte...
L'erreur vient du fait que tu essayes d'ajouter à la scène (addChild) une chaine de caractère (chooseclip : le nom de fichier en aléatoire) et non pas le fichier chargé lui même !
Tu dois donc charger le fichier avant d'essayer de le mettre sur la scène... logique.

Dans l'idée et afin d'utiliser ta classe "randomize", tu peux essayer ceci à la place du "addChild(chooseclip);" :
var contener:randomize = new randomize([chooseclip]);
addChild(contener);


Bon courage !
0
Genoso Messages postés 4 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 10 septembre 2010
9 sept. 2010 à 17:33
I love you so much : ) !


En français correct et moins expressif de joie : Merci beaucoup Jetmix : ) Je dormirais tranquillement ce soir : D
0
jetmix Messages postés 19 Date d'inscription jeudi 3 juin 2004 Statut Membre Dernière intervention 15 septembre 2010
9 sept. 2010 à 17:45
Le mode expressif me convient parfaitement =)
0
Rejoignez-nous