La diferencia entre una expresion de funcion y una sentencia de funcion es la siguiente:
Una sentencia de función empieza con la palabra clave function, seguida de:
■ El nombre de la función
■ Los parámetros, en una lista delimitada por comas y escrita entre paréntesis
■ El cuerpo de la función (es decir, el código ActionScript que debe ejecutarse cuando se invoca la función), escrito entre llaves.
Por ejemplo, el código siguiente crea una función que define un parámetro y después invoca la función con la cadena "hello" como valor del parámetro:
Código :
function traceParameter(aParam:String) {
trace(aParam);
}
traceParameter("hello"); // hello
La segunda manera de declarar una función es utilizar una sentencia de asignación con una expresión de función (también se suele llamar literal de función o función anónima). Éste es un método que requiere escribir más y que se usaba mucho en versiones anteriores de ActionScript.
Una sentencia de asignación con una expresión de función empieza por la palabra clave var, seguida de:
■ El nombre de la función
■ El operador dos puntos (

■ La clase Function para indicar el tipo de datos
■ El operador de asignación (=)
■ La palabra clave function
■ Los parámetros, en una lista delimitada por comas y escrita entre paréntesis
■ El cuerpo de la función (es decir, el código ActionScript que debe ejecutarse cuando se invoca la función), escrito entre llaves.
Por ejemplo, el código siguiente declara la función traceParameter mediante una expresión de función:
Código :
var traceParameter:Function = function (aParam:String) {
trace(aParam);
};
traceParameter("hello"); // hello
Ya aclarado el punto anterior, veamos tus ejemplos:
Código :
miboton_mc.addEventListener(MouseEvent.CLICk, functionnn);
function functionn(Event.MouseEvent):void{
trace("hola");
}
Aqui estas llamando a un metodo llamado addEventListener, al cual le pasas dos parametros, que son un String, y la instancia de otra función (no es solo el nombre, es la instancia completa). Este metodo internamente manda a ejecutar la función que le pasaste como parametro, y al acer esto la ejecuta con un parametro tipo EVENTO (Event).
Por lo tanto "functionnn", NO ES un evento, ES una función tipo "Sentencia de función" que se ejecuta cuando se detecta un EVENTO, y tiene como parametro un objeto tipo EVENTO (Event).
Código :
function traceParameter(aParam:String){
trace(aParam);
}
Aqui traceParameter también es una función tipo "Sentencia de función", la cual puedes llamar a ejecutar con la siguiente línea:
traceParameter("Hola como estas");
Como la función necesita un parametro tipo String, entonces le tienes que pasar un parametro, claro esta que el cuerpo de la función tu la defines y le puedes poner código que realmente te sirva, por ejemplo, puedes hacer una función que calcule el área de una figura, pasandole como parametros el tipo de figura y los datos que necesite para el cálculo. O puede ser algo más complicado, si sabes para que sirven las funciones ¿NO?
Código :
var traceParameter:Function = function (aParam:String){
trace(aParam);
};
Esta es una función del tipo "expresion de funcion", y este tipo de funciones se usan solo si existe la necesidad específica de hacerlo, si no tienes necesidad entonces no lo hagas.
En el libro
http://livedocs.adobe.com/flash/9.0_es/main/flash_as3_programming.pdf de Adobe
lee la sección de "Fundamentos de la utilización de funciones".