зачем второй вектор? зачем первый? почему забор по индексу? откуда в векторе звуки?
совершенно не понятно зачем выбран такой извращенный способ. если передаете вместо вектора sound то он внутри функции и не будет присвоен.
задача функции возвращать этот звук, это она делать и должна.
Код AS3:
var cache:Object={};
public function get_mus(id:String):Sound{
return cache[id]||(cache[id]=new getDifinitionByName(id))
}