1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
||||||
1 | ||||||
Переменная в классе сама обнуляется11.02.2017, 14:42. Показов 2147. Ответов 20
Метки нет (Все метки)
Сейчас начал изучать SFML и пишу мини-игру для закрепления. Но вопрос с SFML почти никак не связан, ибо такая проблема возникала и без SFML и окольными путями я ее решил. Сейчас же я запутался и прошу помощь.
В общем, ситуация такая. В мини-игре есть главный персонаж. Для него я сделал отдельный заголовочный файл и там определил класс главного персонажа. Также я создал файл исходного кода и в нем уже расписал методы класса. В этом же исходнике я создал объект класса персонажа, для того, чтобы этот объект был доступен только в этом файле. Также в нем я создал функцию, которая может быть вызвана в main(), чтобы воздействовать на персонажа. Сейчас напишу упрощенный код, чтобы вы поняли.
Такое раньше было и с обычными переменными, но как-то я эту проблему решил, уже не помню как. Помогите разобраться с этой проблемой.
0
|
11.02.2017, 14:42 | |
Ответы с готовыми решениями:
20
Переменная не обнуляется до конца Переменная произвольно обнуляется Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? Переменная обнуляется |
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|
11.02.2017, 15:33 | 2 |
Насколько я помню, в конструктор объекта типа Sprite, нужно передавать объект типа Texture, в который, в свою очередь, должен быть передан объект типа Image.
Если вы передаете в конструктор перса спрайт, который содержит в себе текстуру без картинки, то вот, вот это и есть проблемой. Или Вы все правильно сделали? Проверьте.
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 16:07 [ТС] | 4 |
Это проверил. Все сделал, как надо. Тут писали, что дело в глобальных переменных. Я тоже думаю, что из-за этого. Только вот никак не придумаю, куда ее деть, чтобы не была глобальной.
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 17:06 [ТС] | 6 |
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 17:12 [ТС] | 7 |
Вот суть проблемы. На первом скриншоте показано, что происходит после создания объекта. А на втором, что происходит после метода. Я не понимаю, из-за чего такое произошло.
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 17:32 [ТС] | 9 |
Единственное, что там контактирует со спрайтом - это метод окна .draw, который использует спрайт как аргумент и рисует его в этом самом окне. Но я попробовал вывести этот метод в main, что никак не помогло.
Но теперь вот в каком моменте спрайт ведет себя неадекватно. Что-то метод clear() творит. Причем, если его убрать вообще, то ничего не меняется. Спрайт начинает вести себя неадекватно после отрисовки уровня. Но он никак не контактирует со спрайтом игрока.
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 17:45 [ТС] | 10 |
Перевел объект класса в main полностью. Теперь она не глобальная переменная. Но проблема не исчезла. Это видимо надо на форум SFML-щикам писать.
0
|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|
11.02.2017, 19:06 | 11 |
Саша Перков, скинь код функции, возможно, ошибка там.
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 19:52 [ТС] | 14 |
А как большой код можно, скинуть, строчек там очень много? Даже если ненужное вырезать, то будет прилично. Может файлом как-то или на сайт специальный?
Добавлено через 52 секунды То есть как нужно сделать? Хранить и текстуру в объекте класса и постоянное ее в спрайт подгружать, так?
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 19:57 [ТС] | 16 |
Ну спрайт у меня хранится как переменная-член класса. Также и с текстурой сделать?
0
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|
11.02.2017, 20:00 [ТС] | 18 |
Парень - ты мой герой. Я сделал как ты сказал и все получилось. Весь день убил на решение проблемы. Спасибо тебе огромное. Ты, я так понял, SFML хорошо знаешь, можно как-то с тобой связываться, если будут вопросы? А то формы по SFML пусты обычно.
Все остальным, кто будет интересовать как я решил проблему - просто храните не только спрайт в классе, но и текстуру. Не знаю как это влияет, но это помогло.
0
|
Любитель чаепитий
|
|
11.02.2017, 20:05 | 19 |
Не, я просто с этим сталкивался неоднократно, поэтому пришлось искать причины.
У нас есть, и он отнюдь не пустой! Милости просим. https://www.cyberforum.ru/sfml/
0
|
Неэпический
|
|
11.02.2017, 20:19 | 20 |
Саша Перков, архив к сообщению приложите.
Врядли тут дело в sfml. Скорее всего Вы допустили где-то ошибку. upd: как это влияет? В спрайте sfml хранит указатель на текстуру. Соответственно, та должна быть жива. Для текстур лучше сделайте менеджер, а не храните текстуры непосредственно в своих объектах без особой на то причины. Текстуры - тяжелый ресурс.
0
|
11.02.2017, 20:19 | |
11.02.2017, 20:19 | |
Помогаю со студенческими работами здесь
20
Обнуляется переменная Обнуляется переменная Обнуляется переменная Обнуляется глобальная переменная Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |