Problema al colorear objetos por separado
Publicado por tipitipi (2 intervenciones) el 09/01/2010 19:50:55
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!!!
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
0