Problem z wyświetleniem widoku w sfml

0

Chciałem nauczyć się tworzyć przewijany ekran w sfml. Na początku zamierzałem zrobić program tworzący 10 sprajtów, z czego jeden powinien być widoczny na ekranie od początku. Pojawił się jednak problem z tym, że pierwszy sprajt się nie wyświetla.

main.cpp

#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>
#include <backgroud.h>
int main()
{
    float a = -800;
    sf::View view(sf::Vector2f(320.f, 200.f), sf::Vector2f(640.f, 400.f));
    //*************************************************************************
    sf::Texture test;                       //background texture
    test.loadFromFile("test.png");       //loading background texture
    std::vector <backgroud*> backrounds;                    // background
    backgroud*wskaz_back;
    for(int i = 0; i < 10; i++ )  //load backgrounds in to vector
    {
        sf::Vector2f xy;
        xy.x = 0;
        xy.y = i*a;
        wskaz_back = new backgroud(test, xy);
        backrounds.push_back(wskaz_back);
        delete wskaz_back;
    }



    sf::RenderWindow okno( sf::VideoMode( 640, 400, 32 ), "Gra" );       //render window
    while( okno.isOpen() )                                              //main loop
    {
        sf::Event zdarzenie;
        while( okno.pollEvent( zdarzenie ) )                            //event loop
            {
            if( zdarzenie.type == sf::Event::Closed )
                 okno.close();

            if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
                 okno.close();

            }
        okno.clear(sf::Color(0, 0, 0));                                 //clear window
        for(int i = 0; i < backrounds.size(); i++)                             //draw backgrounds
        {
            okno.draw(backrounds[i]->sprajt);
        }
        okno.display();                                                 //display window
    }

    return 0;
}

backgroud.h

#ifndef BACKGROUD_H
#define BACKGROUD_H
#include <SFML/Graphics.hpp>

class backgroud
{
    public:
        sf::Sprite sprajt;
        backgroud(sf::Texture tekstura, sf::Vector2f xy);

    protected:

    private:
};

#endif // BACKGROUD_H

backkgroud.cpp

#include "backgroud.h"

backgroud::backgroud(sf::Texture tekstura, sf::Vector2f xy)
{
    sprajt.setTexture(tekstura);
    sprajt.setPosition(xy);
}

1
Gryczany napisał(a):
    for(int i = 0; i < 10; i++ )  //load backgrounds in to vector
    {
        sf::Vector2f xy;
        xy.x = 0;
        xy.y = i*a;
        wskaz_back = new backgroud(test, xy);
        backrounds.push_back(wskaz_back);
        delete wskaz_back;

Tworzysz obiekt, zapamiętujesz wskaźnik, po czym niszczysz obiekt. I zostajesz z wektorem wskaźników wskazujących na NIC.
Po co w ogóle Ci tutaj wskaźniki. Zrób po ludzku vector<background> i nie będzie problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1