problème item renderer et web service
Bonjour,
je suis sur ce problème depuis quelque temps, et j'ai toujours pas réussi a le résoudre.
J'ai un tableau ou des colonnes on un item renderer. cet item renderer redessine le fond des cases suivant la couleur stocké dans une base. Cette base est interrogé via un web service. Le seul soucis, c'est que le updatedisplay s'effectue trop tot, et le graphisme n'est pas mis a jour.
Voici mon item rendrer pour que vous compreniez mieux :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
public class RenderCase extends Label
{
public var taches:ArrayCollection = new ArrayCollection;
private var bgColor:Number;
private var rend:Render = new Render();
public var tableauTache:ArrayCollection = new ArrayCollection;
public var myService:WebService = new WebService;
public function RenderCase()
{
super();
}
//initialisation des taches
private function initTaches():void
{
callServiceTache();
for (var i:int = 0; i<tableauTache.length;i++)
{
var ob:Object = new Object();
ob.value =tableauTache.getItemAt(i).nom;
ob.color=tableauTache.getItemAt(i).couleur;
taches.addItem(ob);
}
}
//Surcharge pour la couleur des cellules
override public function set data(value:Object):void
{
bgColor = 0xFFFFFF;
super.data = value;
if (value != null)
{
var currentValue:String = String(listData.label);
var len:Number = taches.length;
for (var i:Number = 0; i < len; i++)
{
var tache:Object = taches[i];
if (tache.value == currentValue)
{
bgColor = tache.color;
}
}
}
}
//mise a jour du graphisme
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
initTaches();
super.updateDisplayList(unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
g.clear();
g.beginFill(bgColor);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
//fonction servant a appeler le web service pour récupérer les taches
private function callServiceTache():void
{
myService.addgetTableTacheEventListener(handleResultTache);
myService.getTableTache();
}
//fonction permettant de traiter l'appel de la fonction callServiceTaches et de stocker le resultat dasn un tableau
private function handleResultTache(event:GetTableTacheResultEvent):void
{
tableauTache.removeAll();
var longueur:Number;
if (event.result.length == null)
{
longueur=0;
}
else
{
longueur= event.result.length;
}
for (var i:Number = 0; i<longueur; i++)
{
var t:Tache = new Tache(Number(event.result[i].id),String(event.result[i].nom),String(event.result[i].ecriture),String(event.result[i].couleur),false);
tableauTache.addItem(t);
}
}
} |
J'ai essayé avec des addEventListener(Event.COMPLETE,ma fonction) mais sans succès. Peut être était il mal placé...
Avez vous des idées s'il vous plait ?
merci d'avance
florian