Jorge, muchas gracias por tu respuesta y perdona por la demora.
No encontre el tutorial en Cristalab, de todas formas me puse a investigar por la red sobre el ExternalInterface y encontré un tutorial de programación completo (y en castellano) en la web de adobe, en donde también se explicaba el ExternalInteface y su uso en los contenedores ActiveX, que no es igual que si usas JavaScript.
Resumo los pasos para establecer comunicación con flash y poder llamar a las funciones:
---- AS3
Simplemente declara una función con el nombre que quieras y los parámetros que quieras. Despues hay que añadir la línea ExternalInterface.addCallback con el nombre de la función a llamar. Ejemplo:
function miFuncion(miVar:string):void {
trace(miVar);
}
ExternalInterface.addCallback("miFuncion", "funcionNET");
Ojo, funcionNET es el nombre que se verá desde .net, NO miFuncion. Yo, para no confundirme las llamo exactamente igual.
---- .NET
Aqui la cosa es un poco más compleja.
1º Buscamos en la web de adobe los ejemplos de flash que vienen. En concreto buscamos el ejemplo IntrovertIM_CSharp. Sino buscar en google con este nombre que sale todo.
2º Dentro de este ejemplo se encuentra una dll con el nombre ExternalInterfaceProxy. La pegamos en nuestro proyecto .net y la incluimos en las referencias.
3º Importamos el espacio de nombres para poder acceder a las clases que se encuentran en su interior:
imports Flash.External
4º Creamos una variable del tipo ExternalInterfaceProxy, la cual pide un objeto ShockwaveFlash (asumo que ya lo teneis, sino hay muchisimos tutos de como insertarlos)
Public proxy as ExternalInterfaceProxy = new ExternalInterfaceProxy(ShockwaveFlashObject)
5º Simplemente llamamos al métedo call de la variable proxy indicando la función y los parámetros:
proxy.call("funcionNET", variableString)
Con esto el sistema ejecutará en flash la función indicada. Para saber más, leerse el manual de adobe, en el cual se explican muchas más cosas. Esto es una forma rápida de establecer comunicación con un mínimo de funcionalidad. En mi caso basta.
P.D: Como cuiriosidad (o mejor dicho dolor de cabeza), las variables double de .net y Number de flash no son equivalentes (al menos a mi no me ha funcionado) y por tanto no podremos tener una función a la cual se le pase un double ya que no se reconoce. La solución es pasar un valor string y en flash convertir el string en Number mediante:
miVarNumber = Number(miVarString)
P.D: Ojo con la coma de separación, tiene que ser punto.
Ya se que es mucho tostón, pero es lo que tiene, jeje.
Luis Miguel