Problema para pasar una variable de .swf a .fla
Buenas a todos.
Soy nuevo en el foro, y un poco novatillo en AS3, tengo un problemilla.... os explico:
Tengo una clase asociada a un (mc) que se encuentra en el fla a que llamo "letras" en el que lo controlo todo desde la clase que tiene asociada, lo que quiero y no consigo realizar es, pasar el valor de una variable de la clase al archivo fla os muestro el codigo:
package {
import flash.display.*;
import flash.events.*;
import flash.text.TextField;
import flash.net.LocalConnection;
public class findWord extends MovieClip {
public static var palabra:String="";
public static var letraG1:letras;
public function findWord() {
for(var x:uint=0;x<filasHorizontales1;x++){
for(var y:uint=0;y<filasVerticales1;y++){
letraG1 = new letras();
letraG1.stop();
letraG1.estado=false;
letraG1.seleccionada=false;
letraG1.gotoAndStop(letraG1.cardface+2);
letraG1.addEventListener(MouseEvent.CLICK, clickletra);
letraG1.alpha=.5;
letraG1.name='letra'
addChild(letraG1);
}
}
Cuando se ejecuta el listener sobre cualquiera de las letras creadas, me guarda un valor en la variable "palabras", que esta es la variable que quiero pasar al .fla
Si alguien puede echar una mano lo agradecere.
jmjela
Mil gracias a los dos, lo solucione gracias a vosotros, muchas Gracias :)
ochionet
si he entendido bien:
tienes un objeto(mc) dentro del flash que tiene una clase asociada. Lo que quieres es pasar la una variable / propiedad del objeto a la raiz del swf.
Esto lo puedes hacer de muchas formas,
- si desde la raiz quieres acceder a la propiedad debes hacer la variable publica para que sea accesible y preguntar por ella, otra forma, seria hacer la variable privada y llamar a un metodo publico de la clase que te devuelva el valor (getter)
- si desde el mc quieres acceder a la raiz, debes tener una variable publica en la raiz y modificarla desde el objeto. Esto se puede hacer utilizando parent tantas veces como sea necesario; o bien cuando creas el objeto pasarle como parametro la raiz es decir:
en raiz
private var pepe:Pepe;
public var variable:String;
.....
....
pepe = new Pepe(this)
en la clase Pepe
public class Pepe
{
private var donde:Object;
public function Pepe(_donde:Object)
{
donde = _donde;
.....
....
// para pasar la variable
donde.variable = valor
}
Estas opciones funcionan, pero funcionan por que arrastrar parámetros, si el proyecto crece y las variables/propiedades deben de ser accesibles desde diferentes partes del proyecto lo mejor es utilizar una patrón singleton que te permitirá hacer accesible en todo el proyecto propiedades y eventos sin necesidad de arrastrar información.
diego_lorenzo
Yo creo que ya he entendido lo que necesitas hacer, más o menos es acceder desde el swf a una variable de una archivo .as (lo que en AS2 se hacía con _global). Para hacer eso, vas a necesitar una clase intermedia para las variables globales, luego importas esa clase en el .swf y en .as para poder acceder al valor y modificarlo.
Aquí tienes un ejemplo:
http://www.websitemediaplayers.com/blog/global-variables-as3/
Un saludo
jmjela
Hola gracias por contestar, te lo agradezco,
uno es un archivo .as que es donde tengo el paquete con la clase y a donde quiero pasar los valores de algunas variables es al .swf (supongo que no me explique bien).
En el .swf tengo un MC al que llamo "letras" y lo exporto para AS el cual controlo desde la clase que se encuetra en el arcchivo .as
Como estoy manejando el MC "letras" desde el archivo .as quiero pasarle algunos valores de variables al .swf.
El LocalConnection hice una prueba , pero lo deje estar ya que creo que si son padre / hijo.
ochionet
Entiendo que esto que dices no se puede hacer. A día de hoy no he visto un .fla corriendo en un navegador, en cambio si un .swf
Lo que creo que quieres hacer es comunicar dos swf, veo que utilizas LocalConnection, por lo que parece que los .swf no son padre / hijo, si no que estan dentro de un mismo site en diferentes partes colocados.
Revisa esto primero, que todo sea .swf, despues si los swf son padre/hijo no hace falta utilizar LocalConnection, existe otras maneras.
Ya contaras...
jmjela
Nadie sabe o no se puede?