2010-09-20 33 views
0

J'ai actuellement un événement over, out et click pour 8 objets différents. Les événements over et out sont identiques pour chaque (tween développe l'objet puis le réduit pour l'état out).Écoute d'événements multiples sur plusieurs objets AS3

J'ai déjà demandé un moyen facile de déclarer ces événements, et maintenant je cherchais un moyen plus facile de les gérer.

Voici mon code:

//-----------GARAGE 
function growGarage(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_garage, "scaleX", Elastic.easeOut, 0.648, 1, 0.5, true); 
    scaleTweenY = new Tween(map_garage, "scaleY", Elastic.easeOut, 0.648, 1, 0.5, true); 
} 
function shrinkGarage(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_garage, "scaleX", Elastic.easeOut, 1, 0.648, 0.5, true); 
    scaleTweenY = new Tween(map_garage, "scaleY", Elastic.easeOut, 1, 0.648, 0.5, true); 
} 
function garageClick(e:MouseEvent):void{ 
    trace("clicked"); 
} 
//-----------B&B 
function growBandb(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_bandb, "scaleX", Elastic.easeOut, 0.648, 1, 0.5, true); 
    scaleTweenY = new Tween(map_bandb, "scaleY", Elastic.easeOut, 0.648, 1, 0.5, true); 
} 
function shrinkBandb(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_bandb, "scaleX", Elastic.easeOut, 1, 0.648, 0.5, true); 
    scaleTweenY = new Tween(map_bandb, "scaleY", Elastic.easeOut, 1, 0.648, 0.5, true); 
} 
function bandbClick(e:MouseEvent):void{ 
    trace("clicked"); 
} 
//-----------FACTORY 
function growFactory(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_factory, "scaleX", Elastic.easeOut, 0.648, 1, 0.5, true); 
    scaleTweenY = new Tween(map_factory, "scaleY", Elastic.easeOut, 0.648, 1, 0.5, true); 
} 
function shrinkFactory(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_factory, "scaleX", Elastic.easeOut, 1, 0.648, 0.5, true); 
    scaleTweenY = new Tween(map_factory, "scaleY", Elastic.easeOut, 1, 0.648, 0.5, true); 
} 
function factoryClick(e:MouseEvent):void{ 
    trace("clicked"); 
} 
//-----------SCHOOL 
function growSchool(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_school, "scaleX", Elastic.easeOut, 0.648, 1, 0.5, true); 
    scaleTweenY = new Tween(map_school, "scaleY", Elastic.easeOut, 0.648, 1, 0.5, true); 
} 
function shrinkSchool(e:MouseEvent):void{ 
    scaleTweenX = new Tween(map_school, "scaleX", Elastic.easeOut, 1, 0.648, 0.5, true); 
    scaleTweenY = new Tween(map_school, "scaleY", Elastic.easeOut, 1, 0.648, 0.5, true); 
} 
function schoolClick(e:MouseEvent):void{ 
    trace("clicked"); 
} 

J'ai essayé d'utiliser une seule fonction, puis en utilisant « cette » comme l'objet de l'interpolation, mais qui a élargi toute la scène.

Existe-t-il un moyen de condenser ce code?

Cheers,

Dan

Répondre

2

Vous pouvez utiliser un seul gestionnaire, au lieu d'utiliser this, utilisez e.currentTarget. (Quand e est votre événement entrant)