[C++, SFML] Obliczanie zmiany wartości suwaka
Ostatnio zmodyfikowano 2012-11-03 16:30
ridic14 Temat założony przez niniejszego użytkownika |
[C++, SFML] Obliczanie zmiany wartości suwaka » 2012-10-09 22:46:39 Zaprogramowałem II część swojego gui do sfml a mianowicie suwak. wszystko pięknie działa oprócz tego że gdy podam liczby ujemne program nie potrafi tego przeliczyć: kod działający na liczby dodatnie: for( int i = 0; i < _max + 1; i++ ) { if( suwak.getPosition().x - pole.getPosition().x > _interval * i ) { var = pocz + i; } else if( suwak.getPosition().x == pole.getPosition().x + pole.getSize().x ) { var = _max; } }
gcvt( var, 3, varStr ); std::cout <<( int ) var << std::endl;
próbowałem zmieniać operatory i inne rzeczy np.: var = pocz - i; lub i > _max +1; i tak nic się nie zmieniało :( liczę na pomoc:) dzięki |
|
Admixior |
» 2012-10-09 23:07:36 Zastanawia mnie fakt po co pętla. Przecież wystarczy zwykłe dzielenie. Ot tak to wygląda u mnie: int Klasa::MoveMouse( Vector2f pos ) { if( !clicked ) return 0; if( pos.x > pixel.pos_end ) pos.x = pixel.pos_end; if( pos.x < pixel.pos_start ) pos.x = pixel.pos_start; suwak.SetPosition( pos.x, pixel.pos_y ); unsigned int difference_pos = pos.x - pixel.pos_start; unsigned int sel = difference_pos / pixel.move_step; if( select.cur_sel != sel ) { value = start_value +( select.cur_sel = sel ) * value_per_step; } return 1; }
//PS umieściłbym klasę ale mój program pójdzie na konkurs więc nie chcę żeby później ktoś mówił że było jakieś naruszenie zasad (że kod z neta czy coś...). |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-10 16:10:45 Nie, klasę już mam ale chodziło o to że mój sposób nie działa na liczby ujemne ale zrobiłem(działa na + i -: for( int i = 0; i < _max + 1; i++ ) { if( suwak.getPosition().x - pole.getPosition().x > _interval * i ) { var = pocz + i; } else if( suwak.getPosition().x == pole.getPosition().x + pole.getSize().x ) { var = _max; } } if( _max < 0 ) { for( int i = 0; i < - _max - 1; i++ ) { if( suwak.getPosition().x - pole.getPosition().x > _interval * - i ) { var = pocz - i; } else if( suwak.getPosition().x == pole.getPosition().x + pole.getSize().x ) { var = _max; } } }
|
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-11-03 16:30:52 Na podstawie kodu 2 posty wyżej: przedzial =( slideArea.getSize().y - sliderH ) /( maxValue - startValue ); float przesun = slider.getPosition().y - slideArea.getPosition().y; float now = przesun / przedzial; value = startValue + now; proste i dobrze obliczające wartość |
|
« 1 » |