Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - xeex

#1
Hola, les explico la situacion por si me pueden ayudar.

-Tengo la escena principal.
-Dentro de la escena principal tengo un simbolo que es un video clip.
-Este video clip(que esta dentro de la escena principal) tiene un campo de texto dinamico.
-El video clip dura unos 300 frames.
-Quiero, segun lo que se establesca en la escena principal, poder cambiar el campo de texto dinamico del video clip.
-Esto lo he hecho, pero lo que desee ahora es solo cambiar el campo de texto del video clip pero solo desde, digamos, el frame 200 hasta el frame 250.
-Esto tambien lo he logrado hacer, pero de una manera que yo se que no es la optima. La manera en que lo he hecho ha sido llendome al frame 200 y escribiendo un codigo como:

//sea textodinam el texto dinamico que se encuantra en el video clip "hijo".
//sea variable1 el texto que se desea establecer, y que proviene(o mejor dicho se encuentra) en la escena principal.

textodinam.text=MovieClip(root).variable1

Lo malo es que he tenido que escribir este codigo en cada frame desde el frame 200 hasta el frame 250.


Trabajo con flash CS4 con ActionScript 3.0

Me podrian ayudar por favor.
Gracias y Saludos.
#2
GRACIAS
SALUDOS.
#3
Hola. Nunca he tenido la necesidad de conocer el api de windows o como funciona, esto lo digo por que no quiero adentrarme en esta api, solo necesito una ayuda puntual.
Mi pregunta es la siguiente:
Una ventana simple en windows la genero en Dev-Cpp con el siguiente codigo:
#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

que debo poner y donde lo debo hacer, para que si presiono la tecla "Y"(por elegir cualquiera) la ventana se minimize?
GRACIAS Y SALUDOS
#4
gracias por la respuesta.
segui intentando y si, si se podia, habia que darle como argumento: "modelos/*"

WIN32_FIND_DATA f;
HANDLE h = FindFirstFile("modelos/*", &f);

lo unico malo es que las dos primeras posiciones te las llena con "." en la primera y ".." en la segunda(sin las comillas claro esta).
Bueno sabiendo esto basta solo con llamar a FindNextFile(h, &f); 2 veces y luego con las siguientes llamadas se obtendran la lista de las carpetas que se encuentren dentro de la carpeta modelo(en este caso), si es que las hay.

GRACIAS!!
y SALUDOS.
#5
Hola

cuando quiero obtener la lista de archivos, por ejemplo, de tipo .*txt en una carpeta llamada "modelos" hago lo siguiente:
                 
                  WIN32_FIND_DATA f;
                  HANDLE h = FindFirstFile("modelos./*txt", &f);
                  if(h != INVALID_HANDLE_VALUE)
                     {
                        do
                           {
                                 printf("ARCHIVOS TXT =%s\n",f.cFileName);
                           }while(FindNextFile(h, &f));
                     }

mi pregunta es que le debo poner como argumento a la funcion FindFirstFile() para que me de una lista de las carpetas que se encuentran dentro de la carpeta modelos. Es decir, ahora no quiero que me entregue un listado de algun determinado tipo de archivo, sino un listado de las carpetas.

por su ayuda, gracias
SALUDOS.
#6
General Programadores / Re: pregunta respecto al free()
16 de Junio de 2009, 01:10:51 PM
jjejeje  :o tienes toda la razon...es que en mi pais ya son las 6 AM y todavia no me duermo asi que estoy medio ZzzZZz....
gracias
#7
General Programadores / Re: pregunta respecto al free()
16 de Junio de 2009, 12:39:16 PM
gracias por responder...
ahora me surge una duda, es esto valido:

float *rotar()
   {
             .
             .
             .
      float *valores;
      valores= (float *)malloc(3*sizeof (float));
      valores[0]=auxx1;
      valores[1]=auxy1;
      valores[2]=auxz1;
     
      return valores;   
      free(valores);
   }

un free de lo que se retorna( despues de retornarlo)??? se puede??? tiene sentido???
gracias y saludos
#8
General Programadores / pregunta respecto al free()
16 de Junio de 2009, 12:00:09 PM
HOLA A TODOS

Estaba depurando un codigo y llegue a una instancia en donde tenia una funcion de este tipo:

float *rotar()
   {
             .
             .
             .
      float *valores;
      valores= (float *)malloc(3*sizeof (float));
      valores[0]=auxx1;
      valores[1]=auxy1;
      valores[2]=auxz1;
     
      return valores;   
   }
int main()
   {
              .
              .
              .
      float *valores_bmm;       
      valores_bmm=rotar();     
      float xgra,xchi,ygra,ychi,zgra,zchi;
      xchi=valores_bmm[0];   
      xgra=valores_bmm[1];     
      ychi=valores_bmm[2];   
      ygra=valores_bmm[3];     
      zchi=valores_bmm[4];   
      zgra=valores_bmm[5];     
      free(valores_bmm);//¿AQUI VA EL free()?¿y si lo va, está bien de esta manera?      .
              .
              .
              .
   }

Nunca habia devuelto a travez de un metodo o funcion(o como se le quiera llamar) un puntero.
Siempre que he reservado memoria, la he usado y liberado en la misma seccion de codigo en la que la cree, pero como ahora reservo memoria en una funcion y luego devuelvo esos valores a otra parte  no se donde y como poner el free().
Espero que se entienda que es lo que pregunto.
Yo creo que es como lo apunte en el codigo.

GRACIAS Y SALUDOS
#9
gracias por sus repuestas
SALUDOS.
#10
Es decir:
tener emulacion por software(en lo que respecta a OpenGL)=reemplazar la falta GPU????????
mmm no creo que sea solo eso

#11
gracias por la respuesta pero...?...algun ejemplo

citando a wiki:
Citar
"Fundamentalmente OpenGL es una especificación, es decir, un documento que describe un conjunto de funciones y el comportamiento exacto que deben tener. Partiendo de ella, los fabricantes de hardware crean implementaciones, que son bibliotecas de funciones que se ajustan a los requisitos de la especificación, utilizando aceleración hardware cuando es posible. Dichas implementaciones deben superar unos tests de conformidad para que sus fabricantes puedan calificar su implementación como conforme a OpenGL y para poder usar el logotipo oficial de OpenGL."

Hay una parte que no me calza:
-opengl dice: "debes tener una funcion que habilite cierta cosa...."
-los fabricantes de hardware leen la especificacion y dicen:"la targeta que crearemos debe ser capaz de habilitar cierta cosa..."
entonces si opengl dice que hacer y los fabricantes hacen lo que dice opengl, por que se deberia emular por software algo????,si las placas graficas cumplen con la especificacion de ogl.
Emular significa, en este caso, hacer que el cpu haga cierto proceso que la gpu no puede,  pero por que en primera instancia la  targeta grafica no podria ser capaz de hacerlo si supuestamente, esta, cuando fue creada, cumplio con la especificacion...simplemente no entiendo.

No se, sentido para mi tendria que una targeta grafica que no cumplio en su totalidad con la especificacion OGL, es decir, que le faltase un componente o algo que ejecutara una accion....en ese momento aplicarse la emulacion, pero de otra forma no entiendo...¿es así?¿es en ese momento en que se emula algo?
¡SALUDOS.
#12
Hola
Tengo una duda, a que se refiere eso de que opengl puede emular por software?
Me pueden dar un ejemplo concreto en que lo haga.
que emula?
cuando lo hace?
direct3d tambien lo hace?

gracias y saludos
#13
Programación gráfica / Re: un vbo con mas de una textura
10 de Noviembre de 2008, 02:48:51 PM
gracias por responder...vamos  a ver que pasa....
Saludos
#14
Programación gráfica / Re: un vbo con mas de una textura
08 de Noviembre de 2008, 04:01:06 AM
si, no hay mas, mi problema se reduce entonces a ver la forma de hacer una textura que contenga todas las texturas, lo malo, como dije antes, es que si en mi programa elijo una nueva textura, es decir, otra aparte de las que doy a elegir, tendria que encontrar la forma de unirla a la textura-atlas en tiempo de ejecucion...y es eso lo que me complica, sino habra que volver a los displaylist...que pena...
gracias y saludos
#15
Programación gráfica / Re: un vbo con mas de una textura
07 de Noviembre de 2008, 09:49:03 PM
por si no me explique bien esto es exactamente lo que me pasa:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=247593

se puede hacer algo como un arreglo en donde dejar las diferentes texturas, e ir llamandolas segun sea el quad que se esta dibujando?

bueno respondiendome:
-hay una "texture array extension" pero solo disponible para GeForce 8x00, cosa que no tengo
-decomponer el glDrawArrays() para hacer un bind para cada textura para cada quad:

     glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertices_buffer);
     glVertexPointer(3, GL_FLOAT, 0, 0);
     
     glBindBufferARB(GL_ARRAY_BUFFER_ARB, normales_buffer);     
     glNormalPointer(GL_FLOAT, 0, 0);
     
     glBindBufferARB(GL_ARRAY_BUFFER_ARB, texturas_buffer);
     glTexCoordPointer(2, GL_FLOAT, 0, 0);
     int x=0;
     for(int i=0;i<1536;++i)
        {
           glBindTexture(GL_TEXTURE_2D,texturas_objetos[CL[  i  ].textura].ID);     
           glDrawArrays(GL_QUADS, x, x+4);     
           x=x+4;
        }

hace que todo se vuelva ultra lento, bueno es ovio si en vez de dibujar todo de una vez estoy dibujando 1536 por separado, se pierde toda la ventaja del vbo

lo unico que me queda por probar seria la otra solucion que dan de dejar todas las texturas en una textura mas grande, cosa que no tengo idea como hacer y ademas  abrir el fotoshop y pegar una textura  al lado de otra no es solucion para mi ya que en mi programa lo que hago es dar a elegir al usuario que textura va a mapear sobre cada lado, osea no tengo un numero constante de texuras...
asi que ahora estoy mas desesperado aun ...si me pueden ayudar por favor....
gracias y saludos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.