Pb avec la class MovieClip

serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005 - 25 juil. 2005 à 10:26
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 - 28 juil. 2005 à 12:07
Tout d'abord mon objectif: je veux créer un petit menu qui s'ouvre lorsqu'on click sur un mobile.

J'ai une classe Mobile extends de MovieClip

J'essaye de faire une classe qui serait une extends de MovieClip et que j'appelerai dans la classe Mobile (J'ai bien dit une classe cad que dans mon Mobile.as je fais un import du fichier AS de MyMenu)

code rapide:
MyMenu.as
class MyMenu extends MovieClip {
function MyMenu() {...}
function dessinMenu(){...}
+ gestion evenement

Mobile.as
import MyMenu
class Mobile extends MovieClip{
var monMenu:MyMenu;
function Mobile(){
this.monMenu = new MyMenu();
}
function ....
+ gestion evenement avec affichage de monMenu

J'ai essayer plein de truc mais je n'arrive pas a afficher le menu.

************************************************
Ou sinon si qqn sait comment declarer des evenements propre a une var.
Je m'explique:
On reprend la classe Mobile extends MovieClip
on declare une var toto:MovieClip
peut-on faire une gestion d'evenement propre à toto ???
Ca pourrait etre une autre solution

PS: mon mobile est un composant (exporter en swc)

9 réponses

Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
25 juil. 2005 à 12:40
Je te conseil d'eviter les extends MovieClip, et plutot d'utiliser
comme tu l'as deviné un movieClip dans une classe menu, que tu as juste
a declarer et a attacher avec attachMovie dans la fonction constructeur.

C'est bien plus facile d'utilisation aprés et tu peut utiliser le
constructeur new avec ta classe, alors qu'avec les extends MovieClip tu
ne peut pas.

A tchao !
0
serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
25 juil. 2005 à 13:31
Donc si je te suit bien je fais une classe MyMenu qui extends rien du tout et dans cette classe je declare:
var mc:MovieClip;

Et dans ma classe Mobile je fais:
un import MyMenu
var monMenu:Mymenu;
...

voila ce que j'ai compri et je vais de ce pas essayer
Merci
Ps: je donnerai des news
Ps2: Si tu vois une source qui pourrait m'aider au cas ou (car j'ai pas trouver moi)

Apluch
0
serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
26 juil. 2005 à 10:04
Bon je ne vois pas trop (newbie power!!)
voila ce que j'ai fais:
class MyMenu (sans extends)
public var mc:MovieClip;
function MyMenu(){
this.createEmptyMovieClip("mc",5);
...
}

*********************************************
class Mobile extends MovieClip
public var myme:MyMenu;
function Mobile() {
this.myme = new MyMenu();
}
*********************************************
Je n'arrive pas a afficher le menu...
plus bizard je n'arrive pas a avoir acces aux proprietes de mc
exple: trace(<nomMobile>.myme.mc._x); =>undefined

plz help car la je vois pas

Apluch
0
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
26 juil. 2005 à 13:26
Ca ressemble a ca sauf qu'au niveau de la fonction constructeur il faut faire un attachMovie ou un loadClip sur root ou ou tu veut mettre ton clip :


Si ton menu a pour nom de liaison menu dans ta bibliotheque, tu devrais faire comme cela:

function MyMenu(){
_root.attachMovie("menu", "menuRoot", _root.getNextHighestDepth()<!--StartFragment -->);
...
}

A tchao !
0

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

Posez votre question
serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
27 juil. 2005 à 11:45
J'ai essayé plein de truc et je n'y arrive pas.
Le truc c'est que j'aimerai que tout soit gerer par la classe (actionscript)

Je ne suis pas sur d'etre tres clair, cet aprem je poste mes sources allégées.

En attendant si quelqu'un sait si on peut gerer les evenements d'un movieclip interne à une classe extends movieclip.
exemple:
class mobile extends movieclip {
var monmc:MovieClip;
function mobile() {
this.createEmptyMovieClip("monmc",2);
}
function onRollOver() {
...
}
et je voudrais gerer independament le rollover de monmc
est-ce possible?
0
serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
27 juil. 2005 à 14:37
comme promis les sources:
dynamic class MyBouton {

public var ecrit:String;
public var mc:MovieClip;

function MyBouton() {
this.ecrit="mybouton";
this.createEmptyMovieClip("mc",5);
var form1 = new TextFormat("Arial",10,0xFF0000,false,false,false,null,null,"center",0,0,0,0);
this.dessinMyBouton(0x999999);
this.mc.createTextField("lab", 120, this.mc._x+1, this.mc._y+1,this.mc.larg-2,this.mc.haut-2);
this.mc.lab.setTextFormat(form1);
this.mc.lab.text = ecrit;
trace("mybouton construit");
}



function dessinMyBouton(coulor) {
trace("dessin mybouton");
this.mc.beginFill(coulor, 255);
this.mc.moveTo(0, 0);
this.mc.lineTo(0, this.haute);
this.mc.lineTo(this.large, this.haute);
this.mc.lineTo(this.large, 0);
this.mc.lineTo(0, 0);
this.mc.endFill();
this.mc._visible = true;
}


// Gestion des evenements
function onRollOver() {
this.dessinMyBouton(0x00FFFF);
}


function onRollOut() {
this.dessinMyBouton(this.coulo);
}

}


//****************************************************************


import MyBouton


dynamic class Mobile extends MovieClip {


public var mybou:MyBouton;
public var btn_mc:MovieClip;


function Mobile() {
this.createEmptyMovieClip("btn_mc",7);
this.mybou = new MyBouton();
this.btn_mc.attachMovie("mybou.mc",btn1,8);
}


}
*****************************
J'ai aussi esayer avec une classe MyBouton extends MovieClip mais ca marche pas non plus!
Sensei si tu peut jeter un coup d'oeil ou si quelque veut bien se devouer je vous en remercierais.
0
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
27 juil. 2005 à 19:37
Le probleme est simple, quand tu fait le createEmptyMovieClip, tu met this, et this est l'occurence que tu viens de creer avec new, donc ce n'est pas un movieClip, pourtant tu essay d'y creer un movie clip avec createEmptyMovieClip, et cette methode est reservé aux movieClip. Tu applique une methode a une classe qui ne la connait pas, donc il ne se passe rien...

Il faut obligatoirement que tu ais quelque part, _root ou _root.clipMenu sinon tu ne pourra rien faire.

Et si tu veut que ton appli soit plus portative, met dans les parametre de ta classe le chemin vers lequel le clip doit etre attaché.

A tchao !
0
serialtaz Messages postés 7 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
28 juil. 2005 à 08:21
Apres reflexion sur ta reponse je me suis rendu compte que du coup les evenements ne marcherait pas non plus puisqu'ils sont des methodes de la classe movieclip.
Donc il faut que je fasse un extends de movieclip et ca ne maeche pas non plus.
voila le code:
//****************************************************************


dynamic class Boutoon extends MovieClip {

public var ecrit:String;
public var haute:Number;
public var large:Number;
public var coulo:Number;


function Boutoon() {
trace("Boutoon construit");
this._x=0; this._y=0;
this.ecrit="boutoon";
this.haute=20;
this.large=80;
this.coulo=0x999999;
var form1 = new TextFormat("Arial",11,0x000000,false,false,false,null,null,"center",0,0,0,0);
this.createTextField("lab", 2, 1, 1,this.large-2,this.haute-2);
this.lab.text = this.ecrit;
this.lab.setTextFormat(form1);
this.dessinBoutoon(this.coulo);
}

function dessinBoutoon(coulor) {
trace("dessin boutoon");
this.beginFill(coulor, 255);
this.moveTo(0, 0);
this.lineTo(0, this.haute);
this.lineTo(this.large, this.haute);
this.lineTo(this.large, 0);
this.lineTo(0, 0);
this.endFill();
}
// Gestion des evenements
function onRollOver() {
this.dessinBoutoon(0x00FFFF);
}


function onRollOut() {
this.dessinBoutoon(this.coulo);
}


}
0
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
28 juil. 2005 à 12:07
Si tu souhaites l'utiliser comme cela, il faut que tu utilise attachMovie ou que tu mette manuellment ton clip sur ta scene, tu ne peut pas utiliser de new, comme sur un movieClip.
Mais je te conseil de faire comme j'avais dis au dessus, si tu ne comprend pas ce que j'ai mis demande.
Et regarde tes pm.

A tchao !
0