1. Лучше не использовать класс Key.
Лучше использовать класс TextFileld, точнее, обработчик его события onChanged.
Эта функция будет вызываться всякий раз, когда юзер что-то введет в поле, на которое повешен этот обработчик.
В эту функцию запишите искомое суммирование (естественно, с использованием Number());
2. По сути - в вашем коде, скорее всего, дело в том, что если в поле нет текста, Number() выдает NaN, и суммирование с этим NaN будет тоже NaN.
Я это не проверял, проверьте вы.
Если это так, то подумайте, и вставьте где нужно проверку.
Для этого можно использовать функцию isNaN. Если аргумент функции - не number-типа, то функция выдаст true. Это можно использовать при проверке и отказаться от суммирования такого элемента. То есть

Код AS1/AS2:
trace(isNaN(''));
(проверка пустой строки) выведет true, и если это так, то элемент не должен входить в формулу суммирования, или должен быть равен нулю.
Например, можно так:

Код AS1/AS2:
function summation () {
s1 = Number(_root.summ1.text);
s2 = Number(_root.summ2.text);
s3 = Number(_root.summ3.text);
!isNaN(s1) ? sum1 = s1 : sum1 = 0;
!isNaN(s2) ? sum2 = s2 : sum2 = 0;
!isNaN(s3) ? sum3 = s3 : sum3 = 0;
_root.itog1.text = sum1 + sum2 + sum3;
}
_root.summ1.onChanged = _root.summ2.onChanged = _root.summ3.onChanged = summation;
_root.summ1.restrict = _root.summ2.restrict = _root.summ3.restrict = '0-9.';
Последняя строка (с restrict) вводит ограничение на диапазон вводимых символов, чтобы юзер не вбивал туда буквы и прочее, а только цифры и точку (если есть десятичные).
Добавлено через 35 минут
Если полей много, то в функции можно сделать циклы, для аккуратности.