Может я чего не понимаю, но в этом вообще не вижу смысла.

Код AS1/AS2:
var btn:MovieClip = this['s' + i + '_btn'];
btn.num = i;
btn.onRollOver = startPlay;
btn.onRollOut = fadeOutSound;
Также в функции startPlay и fadeOutSound не должно быть этого sounds[i]. Дело в том, что на момент исполнения кода значение i то на котором закончился цикл for. Следовательно работа будет происходить только с одним созданным программно звуком(последним естественно). В подобных случая надо использовать this.