Foros del Web » Creando para Internet » Flash y Actionscript »

problemas SendAndLoad

Estas en el tema de problemas SendAndLoad en el foro de Flash y Actionscript en Foros del Web. Hola a todos tengo un grabe problema, soy nuevo en esto asi que se que me ayudaran a solucionarlo, miren intento hacer un programa que ...
  #1 (permalink)  
Antiguo 12/08/2008, 04:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 14
Antigüedad: 16 años, 3 meses
Puntos: 0
problemas SendAndLoad

Hola a todos tengo un grabe problema, soy nuevo en esto asi que se que me ayudaran a solucionarlo, miren intento hacer un programa que saque fotos mediante una camara web y luego guarde el archivo en el servidor, ok, en flash ya pude sacar la foto por que lo saco en un array con todos los pixeles que luego se debe mandar a un php para que lo tradusca en imagen, tambien funciona el php ya que lo probe con los datos que saca el flash, lo que pasa es que no puedo hacer la conexion entre el php y el action script mediante el comando send and load, sea cual sea la direccion me lanza "Error al abrir la URL" y les juro que sea cual sea la direccion y la respuesta aparece esto, no se que hacer probe tutoriales por todo internet y siempre me aparece ese error, el php lo tengo en mi localhost, y necesito que funcione en localhost :(
miren este es el código de mi action script (no me da nisiquiera el tutorial de mandar mail que se encuentra en todo lado)

se encuentra dentro de mi htdocs en la carpeta sellado
este es el action script direccion
Código:
	
        var weedcam:Camera;
	var zona;
	var imagen:Video;
	var pron,maspron,koala:MovieClip;
    var urlo = "";
    var band=true;



//La función que detecta si pulsamos o no
	function accion()
	{
		
//""Dibujamos"" la imagen de la webcam en el bitmapData
//paramas información
		zona.draw( imagen );
//Estos 3 son iguales, detectan si un pixel es claro o no
// este valor 16777215 es el que toman antes de que se inicialice la cámara así evitamos que aparezcan pulsados al principio

        //Actualizo el estado de progreso
        Progreso_mc.Texto_txt.text = "Guardando imagen...";
        
        //Guardo en una matriz el valor de todos los pixels
        var cadena = new String();
        for(var i=1;i<=imagen._height;i++){
                for(var j=1;j<=imagen._width;j++){
                        cadena += "," + zona.getPixel(j,i).toString(16);
						
                }
        }

       
        enviarImagen = new LoadVars();
                
        //Al recibir los datos del PHP generador
        enviarImagen.onLoad = function(exito){
			trace (exito);
			band=true;
			
                //Si todo ha ido bien
                if(exito){
                        //Actualizo el progreso y cargo en una nueva ventana la imagen generada
                        Progreso_mc.Texto_txt.text = "Imagen recibida";
                        Progreso_mc.Cerrar_bt._visible = true;
                        getURL(urlo + unescape(this.archivo),"_blank");
						trace ("exitoso");
						
                        //Si algo ha fallado
                }else{
					trace ("fallo");
                        //Mensaje de error
                        Progreso_mc.Texto_txt.text = "Error al generar la imagen.";
                        Progreso_mc.Cerrar_bt._visible = true;
                }
        }
        
        //Almaceno en la variable a enviar los valores de los pixels, y el ancho y alto de la imagen
        enviarImagen.imagen = cadena;
        enviarImagen.ancho = imagen._width;
        enviarImagen.alto = imagen._height;
       
				
	        //Envio los datos de la imagen
        enviarImagen.sendAndLoad("http://localhost/sellado/salvar.php",enviarImagen,"POST");
		band=false;
     
		trace ("se envio a salvar.php");
		cadena="";
}

		
//Cogemos las webcam
		weedcam = Camera.get();
//Le decimos donde tiene que dibujarla
		_root.mcVideo.vid.attachVideo (weedcam );
//Creamos un nuevo bitmapData, indispensable para usar el getPixel
		zona = new flash.display.BitmapData( 320, 240 );
//Lo guardamos en una variable
		imagen = _root.mcVideo;

   
      var listKey:Object = new Object();
   
      listKey.onKeyDown = function () {
  
          if (Key.getCode() == Key.ENTER) {
          if (band){
			  accion();
   }
            
          }
   
      }
   
      Key.addListener(listKey);
obviamente todo el rato me escribe falso por el trace.
el código php es este que se llama salvar.php y se encuentra exactamente en la direccion que se escribe en sendandload
Código:
<?php

error_reporting(0);
/**
 * Get the width and height of the destination image
 * from the POST variables and convert them into
 * integer values
 */
$w = (int)$_POST['ancho'];
$h = (int)$_POST['alto'];

// create the image with desired width and height

$img = imagecreatetruecolor($w, $h);

// now fill the image with blank color
// do you remember i wont pass the 0xFFFFFF pixels 
// from flash?
imagefill($img, 0, 0, 0xFFFFFF);

$rows = 0;
$cols = 0;

// now process every POST variable which
// contains a pixel color
    $c_row = explode(",", $_POST['imagen']);
for($rows = 0; $rows < $h; $rows++){
    // convert the string into an array of n elements
// . $rows

    for($cols = 0; $cols < $w; $cols++){
        // get the single pixel color value
        $value = $c_row[$cols+($w*$rows)];
        // if value is not empty (empty values are the blank pixels)
        if($value != ""){
            // get the hexadecimal string (must be 6 chars length)
            // so add the missing chars if needed
            $hex = $value;
            while(strlen($hex) < 6){
                $hex = "0" . $hex;
            }
            // convert value from HEX to RGB
            $r = hexdec(substr($hex, 0, 2));
            $g = hexdec(substr($hex, 2, 2));
            $b = hexdec(substr($hex, 4, 2));
            // allocate the new color
            // N.B. teorically if a color was already allocated 
            // we dont need to allocate another time
            // but this is only an example
            $test = imagecolorallocate($img, $r, $g, $b);
            // and paste that color into the image
            // at the correct position
            imagesetpixel($img, $cols, $rows, $test);
        }
    }
}

// print out the correct header to the browser
header("Content-type:image/jpeg");

// display the image
imagejpeg($img);

?>
que puedo hacer?, les repito que no me funciona ningun pero ningun tutorial en la red de conexion entre php y actionscript, siempre me aparece error al intentar abrir la url.
Gracias de antemano.
  #2 (permalink)  
Antiguo 12/08/2008, 05:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 14
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas SendAndLoad

Para decirles nomas que este codigo que acabo de hacer tampoco da que es mucho más... adecuado para hacer una prueba
este es el action script:
Código:
enviaNumeros.numero1 = 7;
enviaNumeros.numero2 = 10;

//Cuando reciba la variable, que imprima el resultado

recibeNumeros.onLoad = function(){
        
        trace("La suma es : " + this.suma);
        
}

//Envío la variable que contiene los dos números a la url del PHP, le digo que voy a recibir 
//recibeNumeros de ese PHP y que el método es post.

enviaNumeros.sendAndLoad("http://localhost/sumar.php", recibeNumeros, "post");
trace ("enviado");
stop();
este es el php que se encuentra en la raiz de localcost como indica el send and load

Código:
<?php

   $numero1 = $_POST[numero1];

   $numero2 = $_POST[numero2];

   $suma = $numero1 + $numero2;

   echo "suma=" . $suma;

?>
este es el error

Código:
enviado
Error al abrir la URL 'http://localhost/sumar.php'
La suma es : undefined
como veran siempre es ese error de abrir la url
:( pro si acaso mi servidor php si esta funcionando espero me ayuden, gracias de antemano.
  #3 (permalink)  
Antiguo 14/08/2008, 22:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 14
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Respuesta: problemas SendAndLoad

lo logre, como les dije soy muy nuevo en esto, el problema es que no se me ocurrio publicar el swf en una pagina html, que la abriera desde mi localhost, osea es como si estubiera intentando hacer funcionar las cosas a la fuerza y no como se debe, cree su html y lo llame desde localhost y funciono todo tranquilo, la macana es que tengo ahora otro problema, el código que les mostre arriba del php que genera una imagen no admite que se le añadan funciones aparte entiendo que es algo asi como una cabecera se le agregara o cosas del futbol, bueno por eso mismo tube que hacer una funcion aparte que me guarde en una base de datos en postgresql la direccion de la imagen que mande asi que ahora en ves de un sendAndLoad tengo 2 uno para el php y luego otra para la base de datos mi código quedo más o menos asi:
Código:
	

//Variables que utilizaremos
	var weedcam:Camera;
	var zona;
	var imagen:Video;
	var band=true;



//La función que detecta si pulsamos o no
	function accion()
	{
		
//""Dibujamos"" la imagen de la webcam en el bitmapData
//paramas información
		zona.draw( imagen );
//Estos 3 son iguales, detectan si un pixel es claro o no
// este valor 16777215 es el que toman antes de que se inicialice la cámara así evitamos que aparezcan pulsados al principio

        //Actualizo el estado de progreso
        Progreso_mc.Texto_txt.text = "Guardando imagen...";
        
        //Guardo en una matriz el valor de todos los pixels
        var cadena = new String();
        for(var i=1;i<=imagen._height;i++){
                for(var j=1;j<=imagen._width;j++){
                        cadena += "," + zona.getPixel(j,i).toString(16);
						
                }
        }

        //enviarImagen = new LoadVars();
        enviarImagen = new LoadVars();
		enviar = new LoadVars();
		enviar.onLoad = function(exito){
			sal.Text ="aqui estoy";
						if(exito){
							sal.Text ="aqui estoy";
						    setTimeout(limpiar, 5000);
						}
						else
						{
							sal.text = "Vuelva a ingresar su tarjeta";
						     setTimeout(limpiar, 5000);
						}
		}
                
        //Al recibir los datos del PHP generador
        enviarImagen.onLoad = function(exito){
			
			band=true;
			
                //Si todo ha ido bien
                if(exito){
                        //Actualizo el progreso y cargo en una nueva ventana la imagen generada
                        Progreso_mc.Texto_txt.text = "aceptado";
                        //getURL(urlo + unescape(this.archivo),"_blank");
						dir = this.dir;
						
						
						sal.text="se esta enviando";
						setTimeout(limpiar, 5000);
						enviar.id=id.text;
		                enviar.dir =this.dir;
						enviar.sendAndLoad("salva.php",enviar,"POST");
						sal.text="se envio";
						setTimeout(limpiar, 5000);
                        //Si algo ha fallado
                
				}
				else{
					
                        //Mensaje de error
                        sal.text = "Vuelva a ingresar su tarjeta2 ";
                        setTimeout(limpiar, 5000);
                }
        }
        
        //Almaceno en la variable a enviar los valores de los pixels, y el ancho y alto de la imagen
        enviarImagen.id=id.text;
		enviarImagen.imagen = cadena;
        enviarImagen.ancho = imagen._width;
        enviarImagen.alto = imagen._height;
       
				
						
        //Actualizo el progreso
      
        
        //Envio los datos de la imagen
        enviarImagen.sendAndLoad("salvar.php",enviarImagen,"POST");
		band=false;
     
		trace ("se envio a salvar.php");
		cadena="";
}

function limpiar ()	{
	sal.text = "";
	}
//Cogemos las webcam
		weedcam = Camera.get();
//Le decimos donde tiene que dibujarla
		_root.mcVideo.vid.attachVideo (weedcam );
//Creamos un nuevo bitmapData, indispensable para usar el getPixel
		zona = new flash.display.BitmapData( 320, 240 );
//Lo guardamos en una variable
		imagen = _root.mcVideo;

   
      var listKey:Object = new Object();
   
      listKey.onKeyDown = function () {
  
          if (Key.getCode() == Key.ENTER) {
          if (band){
			  accion();
   }
            
          }
   
      }
   
      Key.addListener(listKey);
la cosa es que ahora todo esta bien en una primera parte, genera el archivo pero como ven ahi cuando se devuelve valores despues de haber generado la imagen se tiene que volver a mandar valores al servidor esta ves al php con el script para la base de datos, ahi es donde esta el problema, no lo hace se queda mandando los datos o algo por ahi pero no recibe respues y obviamente no se escribe nada en la base de datos como se deberia de escribir, que es lo que pasa alguien sabe? espero me respondan gracias

Última edición por midas84; 14/08/2008 a las 22:18
  #4 (permalink)  
Antiguo 15/08/2008, 08:33
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: problemas SendAndLoad

hola midas84

para enviar los datos del asc tienes que hacerlo mediante la misma variable un error que as puesto acerca de la suma se genera porque envías variables que están en otro contenido el código correcto para el envió de datos es el siguiente

Código PHP:

enviaNumeros
= new LoadVars();
enviaNumeros.numero1 7;
enviaNumeros.numero2 10;

enviaNumeros.sendAndLoad("http://localhost/sumar.php"enviaNumeros"post");
enviaNumeros.onLoad = function(){        
        
trace("La suma es : " this.suma);
        

el php lo tienes bien con este conceptos podrás ver los errores en los demás scripts
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 15/08/2008, 09:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 14
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas SendAndLoad

hola Lynxcraft gracias por responder, me parece bien lo que me dijsite tenias razon, el código de la suma que hice per, era un ejemplo, bueno ahora el lio que tengo es con el ultimo codigo que mande, como veras esta más completo y utiliza 2 sendandload el primero en ejecutarse es:

Código:
enviarImagen.sendAndLoad("salvar.php",enviarImagen,"POST");
y el que se ejecuta despues es :

Código:
enviar.sendAndLoad("salva.php",enviar,"POST");
el primero se ejecuta bien, ya que genera la imagen y lo guarda en disco pero el segundo manda a una conexion con la base de datos que lo probe aparte y funciona bien, lo que hace es ingresar la direccion de la imagen y guardarla en la BD pero ese no llega a funcionar, le puse etiquetas para poder ver más o menos por donde va el código, (imprime etiquetas segun donde este el codigo) y supuestamente llega a ejecutarse la etiqueta que pongo despues del

Código:
enviar.sendAndLoad("salva.php",enviar,"POST");
pero pues no llega a ingresar la tupla, asi que supongo que no esta mandando bien la info o talves no es posible poner sendandload anidados por que obvio lo estan? gracias por responder y espero me puedan ayudar
  #6 (permalink)  
Antiguo 15/08/2008, 10:03
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: problemas SendAndLoad

a ver ese problema lo tuve a se tiempo al parecer si envías datos varias veces al mismo archivo el el flas crea un conflicto por lo cual en segundo envió tiene problemas así que como estas enviado los datos a un mismo archivo es mejor que los unas, asi evites estar llamando dos veces el mismo archivo y enviando datos por separado sino envíalos dos archivos con nombres distintos

he intentado hacerte un arreglo pero es un poco complicado ya que al parecer el primer envio genera una dir que luego vuelves a enviar prodrias evitar todo eso directamente en el php cuando termine de registra te envié la información del estado al flash
como consejo lo mejor es que si tienes que enviar varias variables a un mismo archivo las juntes todas en una sola y hagas los arreglos pertinentes en el php para ver si son validas o no
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:07.