Flash - Colorear objetos de forma controlada en flash

 
Vista:

Colorear objetos de forma controlada en flash

Publicado por jaldonfer (1 intervención) el 09/01/2010 19:56:29
Hola a todos:

Tengo un problema con action script y no entiendo por qué.
Estoy desarrollando una aplicación en flash en la que mediante un archivo auxiliar php ( que se llama desde el propio flash ) consulto a una base de datos un campo concreto y en base al resultado que el php le devuelva a flash, coloreo un campo de un color ó de otro. esto me funciona correctamente, pero para un solo campo.

Por tanto lo que pensé fue en crear una función a la que se le pasasen los parámetros de la consulta sql y el campo que quiero colorear en base a esa consulta para poder atacar al objeto que yo quiera y aqui me he encontrado un problema que no se como solucionar.

Adjunto el código de todos los ficheros que he creado:

--------------------------------------------------------------------------------------------------------
Fichero action script auxiliar "Script.as":

_global.fn_ColorFondo = function(InObj, InIdLLenado, InVariable)
{
//Declaramos Variables Auxiliares
AuxObjeto = InObj;
AuxIdLLenado = InIdLLenado;
AuxVariable = InVariable;
//Declaramos Variables Auxiliares

//Creamos Nuevo objeto para comunicarnos con el PHP
datos= new LoadVars();
datos.Id_LLenado = AuxIdLLenado;
datos.Nombre_Variable = AuxVariable;
datos.onLoad = function()
{
texto = datos.resultado;
}

datos.sendAndLoad("ConsultaSQL.php", datos, "POST");

//Definimos el Objeto
miobjeto = new Color (_root.AuxObjeto);

if ( texto == 1 ) {
micolor = 0xFFFF00;
miobjeto.setRGB(micolor);
}
else {
micolor = 0xFF3300;
miobjeto.setRGB(micolor);
}

destroyObject(miobjeto);
destroyObject(datos);
}
--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------
En el fichero "ConsultaSQL.php":
<?php

//Conectamos con oracle
fn_ConectarOracle($AuxConnOracle);

//Declaración de Variables Auxiliares
$AuxCantidad = 0;
$AuxNombreVar = "";
$AuxIdLLenado = 0;
$AuxEstado = 0;
//Declaración de Variables Auxiliares

//Recuperar Valores que se envían desde Flash
$AuxIdLLenado = $_POST['Id_LLenado'];
$AuxNombreVar = $_POST['Nombre_Variable'];

//Asegurar Valores de Navegación
if ( $AuxIdLLenado == NULL ) {$AuxIdLLenado = 0;}
if ( $AuxNombreVar == NULL ) {$AuxNombreVar = "VAR_RELLENO";}

//Primeramente chequeamos que la variable existe
$AuxConsulta = "SELECT COUNT(*) AS CANTIDAD FROM TABLA WHERE ID_LLENADO = ".$AuxIdLLenado;
$AuxResultado = ociparse($AuxConnOracle, $AuxConsulta);
ociexecute($AuxResultado, OCI_DEFAULT);
ocifetch($AuxResultado);
$AuxCantidad = ociresult($AuxResultado, "CANTIDAD");


//Si la Variable NO EXISTE, se lo decimos a Flash
if ( $AuxCantidad != 1 )
{
//Devolver el Resultado de la Variable a "0" a Flash
echo "resultado=0";
}

//Si la Variable existe la consultamos
if ( $AuxCantidad == 1 )
{
$AuxConsulta = "SELECT * FROM TABLA WHERE ID_LLENADO = ".$AuxIdLLenado;
$AuxResultado = ociparse($AuxConnOracle, $AuxConsulta);
ociexecute($AuxResultado, OCI_DEFAULT);
ocifetch($AuxResultado);
$AuxEstado = ociresult($AuxResultado, $AuxNombreVar);

//Devolver el Resultado de la Variable a Flash
echo "resultado=".$AuxEstado;
}

//Para registrar lo que le devolvemos al php
$AuxInsert = "INSERT INTO TABLA_TEST_FLASH ( ID, NOMBRE ) VALUES ( SECUENCIA.NEXTVAL, 'Id_LLenado: ".$AuxIdLLenado." - Nombre_Var: ".$AuxNombreVar." - Estado Variable: ".$AuxEstado."' )";
$AuxResultado = ociparse($AuxConnOracle, $AuxInsert);
ociexecute($AuxResultado, OCI_DEFAULT);
ocicommit($AuxConnOracle);

//Desconectamos de Oracle
fn_DesconectarOracle($AuxConnOracle);

?>
--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------
Y finalmente el codigo del archivo .fla:

En el primer fotograma: #include "Script.as" ( Para poder utilizar la función )

en el segundo y tercer fotograma: ( del tercer fotograma salta con un gotoAndPlay al fotograma numero 02 para refrescar continuamente el estado de los campos en base de datos )
fn_ColorFondo("Objeto_01", 1, "SIN_MODO");
trace("----------------------------------------------");
fn_ColorFondo("Objeto_02", 2, "SIN_MODO");
trace("----------------------------------------------");
fn_ColorFondo("Objeto_03", 3, "SIN_MODO");
trace("----------------------------------------------");
fn_ColorFondo("Objeto_04", 4, "SIN_MODO");
trace("----------------------------------------------");
--------------------------------------------------------------------------------------------------------

*El comportamiento del flash es curioso. Todos los objetos se ponen del color que se obtenga en la ultima llamada a la función "fn_ColorFondo" ( para este caso aqui expuesto, todos los objetos se pondrán del mismo color que el Objeto_04 ).

Todas las trazas que ponga se generan de una forma coherente, por lo que no encuentro la explicación a lo que me está ocurriendo.

Expero haberme explicado con claridad.

Muchas gracias a todos y saludos cordiales!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder