Forums Développement Multimédia

Aller au contenu

Methode static

CODE Actionscript

12 réponses à ce sujet

#1 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 13:28 PM


Bonjour, je cherche a appeler un méthode static qui se trouve sur la class parent de mon sprite.
Bien sur je peux faire:

Action Script

Classparent.mySearchValue

Mais j'aimerais bien ne pas avoir à importer toute la classe, du coup j'aurais préféré qq'chose comme ceci:

Action Script

parent.parent["mySearchValue"] as Number

Mais bien sur cela ne marche pas d'ailleur si je fais

Action Script

parent.parent.hasOwnProperty("mySearchValue")
, j'ai bin false comme résultat.

Est-ce que quelqu'un à une idée icon_question.gif

#2 mail

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 246 messages

Posté 04 July 2008 - 14:03 PM

Ton code essaye d'accéder au grand-parent ^^

Essaye juste :

Action Script

trace( parent["mySearchValue"] as Number );


#3 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 14:08 PM

Oui désolé, c'est parceque dans mon test chez moi, il s'agit du parent.parent, mais cela ne change rien. Le problème est le même.

#4 Logic

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2733 messages

Posté 04 July 2008 - 14:20 PM

Citation
Mais j'aimerais bien ne pas avoir à importer toute la classe


Je vois pas où est le problème.

#5 mail

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 246 messages

Posté 04 July 2008 - 14:27 PM

Je ne vois pas non plus, mais cela dit ça devrait fonctionner.

Question con, le prends pas mal icon_wink.gif mais ta méthode est bien déclarée comme public ?

#6 antinua

  • Members
  • PipPipPipPipPipPipPipPip
  • 1067 messages

Posté 04 July 2008 - 14:30 PM

Bonjour.

Tu peut m'expliquer cette phrase : "J'aimerais bien ne pas avoir à importer toute la classe"
Une classe est un objet complet et insécable, tu charger toute la classe, ou pas du tout, mais pas un peu.

Donc, est-ce que je t'ai mal compris, ou que tu cherche a faire un truc pas possible ?

bonne journee.

EDIT: grillée par Logic et Zed-K

#7 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 14:51 PM

Déjà merci à tous pour vos réponses.

Alors déjà pour mieux expliquer mon propos voici quelques lignes de codes.

Action Script


// Class Main
package test
{
import flash.display.Sprite;
import test.nav.*

public class Main extends Sprite
{
public static var mySearchValue:Number = 5;

public function Main()
{
var newClass:Test = new Test();
addChild(newClass);
}
}
}

// Class Test
package test.nav
{
import flash.display.Sprite;
import flash.events.Event

public class Test extends Sprite
{
public function Test():void
{
addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(event:Event):void
{
trace(parent["mySearchValue"] as Number )
}
}
}

Pour expliquer un peu plus mon "J'aimerais bien ne pas avoir à importer toute la classe", c'est par exemple ici je ne veux pas avoir à importer test.Main.
Le but est surtout de pouvoir récupérer des variables statiques de class parent sans avoir à importer cette dernière. L'utilisation est essentiellement pour des swf externes, et pour un gain de poids. Mais peut-être que je me trompe complètement et que je n'aurais aucun gain de poids supplémentaire.



#8 antinua

  • Members
  • PipPipPipPipPipPipPipPip
  • 1067 messages

Posté 04 July 2008 - 15:09 PM

Bonjour.

Un getter non statique sur une variable statique : problème réglé.

Action Script

// Class Main
package test
{
import flash.display.Sprite;
import test.nav.*

public class Main extends Sprite
{
public static var mySearchValue:Number = 5;
public var mySearchValue1:Number = 42;

public function Main()
{
var newClass:Test = new Test();
addChild(newClass);
}

public function get mySearchValue():Number {
return Main.mySearchValue;
}
}
}

// Class Test
package test.nav
{
import flash.display.Sprite;
import flash.events.Event

public class Test extends Sprite
{
public function Test():void
{
addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(event:Event):void
{
trace(parent["mySearchValue"] as Number )
}
}
}
Bonne journée.

#9 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 15:11 PM

Pas vraiment, désolé...
En réalité, j'ai déjà un getter static pour récupérer la variables avant l'initialisation de la classe.
Mais j'ai également besoin de récupérer cette valeur depuis ces enfants.

#10 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 15:28 PM

Désolé c'est pas vraiment clair... icon_rolleyes.gif
Je ne cherche pas actuellement une solution pour contourner l'appel de ma méthode static, je trouverais. Je cherche juste à savoir si dans le cas de figure vu ci dessus, il y a une possibilité d'écriture pour accéder à ma méthode static.
Merci.

#11 mail

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 246 messages

Posté 04 July 2008 - 15:42 PM

Effectivement si ta variable est static tu risquais pas de pouvoir y accéder avec un parent["mySearchValue"], j'avais pas calé ^^;

#12 antinua

  • Members
  • PipPipPipPipPipPipPipPip
  • 1067 messages

Posté 04 July 2008 - 16:00 PM

Bonjour.

Citation (viking @ Jul 4 2008, 04:11 PM) Voir le message
Pas vraiment, désolé...
En réalité, j'ai déjà un getter static pour récupérer la variables avant l'initialisation de la classe.
Mais j'ai également besoin de récupérer cette valeur depuis ces enfants.


Et alors ? rien n'empeche d'avoir un getter static et un getter non-static.

Sinon :

Action Script

trace ((parent as Object).constructor.mySearchValue);
Bonne journée.

#13 mofofrommars

  • Members
  • PipPipPipPipPipPipPipPip
  • 568 messages

Posté 04 July 2008 - 16:25 PM

C'est vrai, c'est ce que j'ai fait, mais je voulais éviter la redondance de code.
Merci encore Aralicia, décidément ces derniers temps tu n'arrêtes pas de me donner des coup de pouces. gourou.gif



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)