Прослушивание нескольких событий на нескольких объектах AS3 - PullRequest
0 голосов
/ 20 сентября 2010

В настоящее время у меня есть событие over, out и click для 8 различных объектов. События over и out идентичны для каждого (анимация разворачивает объект, а затем уменьшает его для состояния out).

Ранее я просил простой способ объявить эти события, а теперь я искал более простой способ их обработки.

Вот мой код:

//-----------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");
}

Я пытался использовать одну функцию, а затем использовать «this» в качестве объекта анимации, но это расширило всю сцену.

Есть ли способ сжать этот код?

Приветствия

Dan

1 Ответ

2 голосов
/ 20 сентября 2010

Вы можете использовать один обработчик, вместо this, используйте e.currentTarget.(Когда e является вашим входящим событием)

...