estoy creando un api de botonera, entonces me he creado una clase boton y luego una clase menu.
primero creo una instancia de la clase boton: (constructor):
- Código: Seleccionar todo
JFSboton::JFSboton() {
alpha = NULL;
_x = 0;
_y = 0;
_h = 0;
_w = 0;
}
JFSboton boton1;
en la clase menu, hay una variable que es un array dinamico de punteros a botones
- Código: Seleccionar todo
static const int numMaxElementos = 20;
JFSboton *elementos;
en el constructor hago esto
- Código: Seleccionar todo
elementos = (JFSboton *) malloc (numMaxElementos*sizeof(JFSboton));
despues, una funcion de añadir botones al menu:
- Código: Seleccionar todo
void JFSmenu::adjuntarBoton(JFSboton *botonAdd) {
ordenado = false;
this->numItems++;
botonAdd->setID(numItems);
printf("\nbotonAdd id: %i", botonAdd->getID());
elementos[numItems-1] = *botonAdd;
printf("\nañadido a la lista");
}
para despues colocar todos los elementos donde deben estar:
- Código: Seleccionar todo
void JFSmenu::distribuirMenu(presentacion tipoPresentacion, int separacion) {
for (int i = 0; i < numItems; ++i) {
//presentacion vertical de la botonera
if (tipoPresentacion == 0) {
elementos[i]._x = this->_x + this->_w/2 - elementos[i]._w/2;
if (i == 0) {
elementos[i]._y = this->_y + separacion;
} else {
elementos[i]._y = elementos[i-1]._y + elementos[i-1]._h + separacion;
}
//presentacion horizontal de la botonera
} else {
elementos[i]._y = this->_y + this->_h/2 - elementos[i]._h/2;
if (i == 0) {
elementos[i]._x = this->_x + separacion;
} else {
elementos[i]._x = elementos[i-1]._x + elementos[i-1]._w + separacion;
}
}
}
ordenado = true;
}
una vez hecho esto, me ha colocado correctamente los 'n' botones dentro del area de menu, etc., etc. pero si luego le pregunto a un boton por su componente X me dice que es 0, tal y como se lo especifique en el constructor, o sea que no ha cambiado su valor aunque esten correctamente colocados. esto me causa conflictos a la hora de hacer funciones onRollOver u onClick y cosas asi y no encuentro el fallo.
por supuesto, estos codigos los he extraido de mis archivos .h y .cpp y por si solos no compilan. si no veis el error, puedo subir los archivos de codigo fuente a un servidor temporal para que os los descargueis y lo probeis. las librerias que uso son la SDL estandar y la SDL_image.
espero haberme expresado suficientemente bien.
muchas gracias a tod@s
atentamente
maije