elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SFML 2.0] Threading or Objects.Update() ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SFML 2.0] Threading or Objects.Update() ?  (Leído 1,781 veces)
X3R4CK3R

Desconectado Desconectado

Mensajes: 74


Divide y vencerás


Ver Perfil WWW
[SFML 2.0] Threading or Objects.Update() ?
« en: 8 Agosto 2012, 19:56 pm »

Buenas, estoy desarrollando en SFML2.0 una clase "Objects" la cual heredan las clases "TextBox", "Button", etc... Supongo que queda clara la idea.

Cada clase heredera tiene su propio método "Update", el cual se encarga de comprobar si el objeto se ha seleccionado, pulsado, etc. En resumen, permite interactuar con el objeto en lugar de que éste sea estático.

El caso es que he estado pensando si ésta es la mejor forma de hacer objetos interactivos o hay alguna más práctica y/o eficiente. Había pensado en crear un hilo en la inicialización del objeto y que éste se encargue de actualizar el mismo, pero no se si es recomendable crear un hilo para cada objeto, ¿sería eficiente tener una aplicación con 100 hilos? :silbar: supongo que no... pero dejo la duda en el aire a ver si alguien me la puediese resolver.

Dejo el code principal:

Código
  1. void Game::Run()
  2. {
  3.    vector<Objects*> objects;
  4.  
  5.    objects.push_back(new TextBox(100,100,400,32,1));
  6.    objects.push_back(new TextBox(100,160,400,32,0));
  7.    objects.push_back(new Button(100,200,160,32,"Registro"));
  8.    objects.push_back(new Button(340,200,160,32,"Login"));
  9.  
  10.    while(window.isOpen())
  11.    {
  12.        while(window.pollEvent(event))
  13.        {
  14.            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) window.close();
  15.            for(int i=0; i<objects.size(); i++)
  16.                if(dynamic_cast<TextBox*>(objects[i])!=NULL)
  17.                    if(event.type == sf::Event::TextEntered)
  18.                        objects[i]->TextEntered(static_cast<char>(event.text.unicode));
  19.        }
  20.  
  21.        window.clear(sf::Color(240,240,240));
  22.  
  23.        for(int i=0; i<objects.size(); i++)
  24.        {
  25.            window.draw(objects[i]->GetSpr());
  26.  
  27.            if(dynamic_cast<TextBox*>(objects[i])!=NULL)
  28.                objects[i]->Update(window,event);
  29.        }
  30.  
  31.        window.display();
  32.    }
  33.    exit(0);
  34. }

La cosa es que no me gusta eso de tener que llamar al método update, me gustaría simplemente inicializar el objeto y no tener que tocar nada más desde fuera, a excepción de window.draw(objects->GetSpr()), y como solución solo se me ocurre recurrir al Multi-Threading, pero tampoco me parece lo mejor...

Resumiendo, quiero que al inicializar un objeto éste se actualice de forma automática.

En fin, espero haberme explicado bien y me gustaría saber como lo haríais vosotros, qué forma os parece más eficiente y si se os ocurre alguna otra forma de suprimir el método Update de mi anterior code.

Saludos y gracias de antemano ;)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
index * objects
Programación Visual Basic
zXxOsirisxXz 7 2,910 Último mensaje 17 Enero 2008, 18:14 pm
por zXxOsirisxXz
SDL, SFML, algo mejor? « 1 2 »
Programación C/C++
anonimo12121 10 10,195 Último mensaje 26 Octubre 2010, 16:08 pm
por Eternal Idol
[TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
PHP
Shell Root 3 13,418 Último mensaje 20 Junio 2011, 07:52 am
por Shell Root
Problema Librería SFML
Programación C/C++
overxfl0w13 2 3,264 Último mensaje 28 Junio 2012, 15:02 pm
por anonimo12121
Chat Qt4/SFML « 1 2 »
Programación C/C++
overxfl0w13 14 9,442 Último mensaje 18 Julio 2012, 16:50 pm
por Puntoinfinito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines