1

Qt Creator を使用して単純な「フロッガー」タイプのゲームを作成しています。4 つの方向キーで動作するプレーヤーと、画面上を自力で移動する車を手に入れることができました。Player、Car、および Frogger クラスを分けています。

Frogger クラスは、paintEventで画像をペイントします。

painter.drawImage(player->getRect(), player->getImage());
painter.drawImage(car->getRect(), car->getImage());

しかし、車の別の画像を読み込もうとすると問題が発生します。車とプレーヤー コンストラクターの両方に使用するimage.load("player.png");と、画面上を移動する車がプレーヤー イメージとして表示され、キーに従って移動するプレーヤーが表示されます。

ただし、画像を「car.png」などの他のもの(すべての画像は同じフォルダーにあります。「その他のファイル」の下にあるQt Creatorにも追加しようとしました)に置き換えると、表示されないようです。他の画像でも試してみましたが、プレイヤーにも表示されません。なぜこれが起こるのかについてのアイデアはありますか? 関数をコメントアウトしてautoMove()も何も変わらないので、移動の実装方法とは関係ないと思います。私が見逃している可能性のあるものについてのアイデアはありますか?

4

1 に答える 1

0

画像をロードするときの手順で、エラーの可能性のある場所を減らすことができると思います。の戻り値をチェックして、これを確認してくださいQImage::load

QString path = "player.png";
bool loadSuccess = image.load(path);
qDebug() << "Image" << path << "loaded? =>" << loadSuccess;

これが false と出力される場合は、Qt が に渡すだけでまったく同じパスを見つけることができるかどうかを確認してくださいQFile

if(!loadSuccess)
    qDebug() << "  File exists? =>" << QFile::exists(path);

これが true と出力される場合、画像形式は Qt で読み取ることができません。非標準の PNG エンコーディングを使用している可能性があります。画像はすべて同じソースからのものですか? (例えば同じ画像編集者で編集)

ただし、上記の最初のデバッグ出力が常に true を出力する場合でもエラーが発生する場合は、エラーは別の場所にあります。次に、画像をどのように使用するかについてのコードをさらに提供していただけると助かります。

于 2012-10-10T11:58:12.133 に答える