Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2006, 12h35   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 46
Points : 46
Par défaut [CLASSES] Attributs non-static apparemment considérés comme static ?

Bonjour à tous !

1er message pour moi ici, donc je vous salue bien bas
Voilà, j'ai quelques ptites notions de Flash, mais là je pige pas trop.
J'ai une classe nommée ToolTipTextManager (oui, en fait après un rapide coup d'oeil j'ai pas trouvé de tooltiptexts pour les composants donc j'ai fait un manager voilou).

Dans cette classe à la base j'avais des attributs static, genre des "defines" pour le délai d'affichage, et le délai de cachage (quel joli mot), mais le reste était NON STATIC :
private var toolTipAreas:Array = new Array(); // Contient les rectangles sensibles au tooltip

Et bien, quand je fais :
var tttManager = new ToolTipTextManager();
Le constructeur n'est meme pas appelé
(je crée un tttManager pour chaque clip enfant que je load dans un container, donc à priori chaque tttManager est supprimé lorsque j'appelle removeMovieClip())

Encore pire : si j'ajoute des tooltipAreas (public function addToolTipText(obj:Object, _ttt:String))
Et bien ca vient s'ajouter a ceux du tttManager précédent qui normalement aurait du etre supprimé, ainsi que tous ses attributs non-static, lors de l'appel a removeMovieClip(). Et meme s'il n'avait pas été supprimé, il s'agit ici d'une autre instance de cette classe, qui devrait donc avoir un Array vide...

Voila donc mon probleme, on dirait que Flash a considéré cet attribut comme étant static. Si quelqu'un sait pourquoi ? Je n'ai jamais eu ce probleme avant (j'ai fait un jeu style worms, donc j'ai un minimum de connaissances rudimentaires tout de meme)

Merci de votre aide !

Lideln
Lideln est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 13h37   #2
Membre émérite
 
Avatar de thecaptain
 
Étudiant
Inscription : décembre 2003
Messages : 916
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2003
Messages : 916
Points : 898
Points : 898
Salut,

c'est un bug connu de flash Pour que tes variables soient non-static, il faut les initialiser dans le constructeur (vé c'est con mais c'est comme ça).

@++
thecaptain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 17h44   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 46
Points : 46
Hello the captain !

Merci pour ta réponse rapide
Ah oki donc c'est un bug connu, c'est déjà rassurant, c'est pas moi code comme un goret :p
D'accord, donc je les initialise à null dans leur déclaration, et je les instancie (new Array()) dans le constructeur...

Sauf que comme je l'avais dit le constructeur n'est jamais appelé (j'avais mis un trace, jamais affiché).

Est ce que si je fais :
var tttManager = new ToolTipTextManager();
C'est différent de :
var tttManager:ToolTipTextManager = new ToolTipTextManager();

??

Est ce que dans le 1er cas il est possible que le constructeur ne soit PAS appelé mais qu'il le soit que dans le 2eme ?

Merci en tous cas pour cette réponse qui m'éclaire bien

Lideln
Lideln est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 19h39   #4
Membre émérite
 
Avatar de thecaptain
 
Étudiant
Inscription : décembre 2003
Messages : 916
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2003
Messages : 916
Points : 898
Points : 898
re,

Citation:
var tttManager = new ToolTipTextManager();
var tttManager:ToolTipTextManager = new ToolTipTextManager();
ces 2 écritures sont identiques MAIS la 1ère variable tttManager n'est pas typée : tu pourras mettre n'importe quoi dedans ==> déconseillé Sinon le fait que ton constructeur ne soit pas appelé, est-ce que tu ne t'es pas planté dans son nom ? Sinon poste la classe

@++
thecaptain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 20h06   #5
Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 46
Points : 46
Bien vu captain !

function ToolTipManager()
au lieu de
function ToolTipTextManager()


Bien joué, et merci du coup de main
(par contre entre temps j'avais tout passé en static, me disant que de toutes facons l'instancier ne servirait à rien...)

A+

Lideln

ps : pour le typage voui, je le fais tout le temps, pour que ce soit comme en C/C++ ou Java. Par contre je pensais que l'erreur venait de là et qu'on ne pouvait appeler le constructeur que sur une variable typée... Merci encore
Lideln est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 20h27   #6
Membre émérite
 
Avatar de thecaptain
 
Étudiant
Inscription : décembre 2003
Messages : 916
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2003
Messages : 916
Points : 898
Points : 898
re,

ouais le gros problème de flash (enfin je trouve) c'est le typage fort, ce qui fait que les gens ayant moins l'habitude du code (ceux ayant l'habitude aussi d'ailleurs) font facilement des erreurs et passent des heures à les chercher. Enfin avec AS3, le typage fort ne servira pas uniquement à la compilation, mais aussi au runtime donc y a un gros progès de ce coté-la

@++
thecaptain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 20h36   #7
Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 46
Points : 46
Oula ca sent la grosse mise a jour de flash là, je vais m'intéresser au sujet, histoire de pas être trop en retard ^^

J'espère qu'ils feront un truc bien strict, bien sécurisé...
Lideln est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h31.


 
 
 
 
Partenaires

Hébergement Web