Автор, часто бывает удобнее задать для какого-то действия функцию, и ее вызывать из разных мест - например, либо по нажатию кнопки, либо по какому-то другому событию. Например.

Код AS1/AS2:
function doIt() { //эта функция делает полупрозрачными сто объектов mc1....mc100
for (i = 1; i <= 100; i++) {
_root['mc' + i]._alpha = 50;
}
}
btn.onPress = doIt; //функция doIt сработает при нажатии на кнопку btn
btn.onRelease = doIt; //функция doIt сработает также при отпускании кнопки btn
text_tf.onChanged = doIt; //функция doIt сработает при вводе нового символа в текстовое поле text_tf
//постоянно проверяем изменение триггера val, если = 1, также сработает функция doIt
this.onEnterFrame = function() {
if (val == 1) {
doIt();
}
}
Другой пример. Назначаем обработчики onRelease для 20-ти кнопок в цикле:

Код AS1/AS2:
function goThere () {
_root['mc' + this.num].gotoAndPlay(50);
}
for (i = 1; i <= 20; i++) {
this['btn' + i].num = i;
this['btn' + i].onRelease = goThere;
}
//this внутри функции goThere указывает на соответствующую кнопку, для которой данная функция работает, то есть btn1... btn20
//поэтому this.num тут будет равно последовательно btn1.num... btn20.num, то есть 1....20
Третий пример. Меняем поведение кнопки:

Код AS1/AS2:
function doOne () {
trace('Делай раз!')
}
function doTwo () {
trace('Делай два!')
}
//В одной части кода:
btn.onRelease = doOne;
....
//Где-то в другом месте, при других обстоятельствах, но для той же кнопки:
btn.onRelease = doTwo;
//либо:
if (val == 0) {
btn.onRelease = doOne;
}
else {
btn.onRelease = doTwo;
}
При такой записи код становится гибче, удобнее для модернизации, переноса в другие места и т.д.
И еще. Поймите простую вещь - вот здесь:

Код AS1/AS2:
btn.onPress = doIt;
в правой части не определяется никакая функция, а только для события onPress указываем ссылку на функцию doIt по ее имени.
Эта запись сродни

Код AS1/AS2:
a = b;
То есть присваиваем одной переменной ссылку на другую.