Il codice da te usato va benissimo, anzi secondo me è fin troppo formale Nel senso che dovrebbe funzionare ugualmente così (poi magari mi sbaglio, tu prova e se non va rimetti quello che avevi fatto ):
codice:
function suona(nome, stack, myvar) {
	if (getTimer()-elapsed>stack) {
		if (!myvar) {
			_root.nome.start(0, 1);
			myvar = true;
		}
	}
}
Per quanto riguarda !, nel codice che hai riportato tu significa: se "myvar" è falso, allora "myvar" prende il suo opposto".


ps @panta: np