0

これについて少し混乱していたので、投稿しようと思いました。私のタイトルが明確でなく、Javaが非常に新しく、説明方法がわからない場合は申し訳ありません。とにかくこれまでの私のコードセットです(私が推測する問題ビット)

int currentImageIndex = 0; // Assuming [0] is your first image.
int[] nextImageList = { 2, 4, 5, 4, 5, 4, 5, 0, 1 };

public void nekoRun() {
    moveIn();
    scratch();
    moveOut();

private void moveIn() {
    for (int i = 0; i < getWidth()/2; i+=10) {
        xPos = i;
        // swap images
        if (currentImage == nekoPics[0]) 
            currentImage = nekoPics[1];
        else 
            currentImage = nekoPics[0];
        repaint();
        pause(150);

private void scratch() {
    for (int i = xPos; i < getWidth();) {
        xPos = i;

        // Swap images.
        currentImageIndex = nextImageList[currentImageIndex];
        currentImage = nekoPics[currentImageIndex];



            repaint();
            pause(150);
        }
}

private void moveOut() {
    for (int i = xPos; i < getWidth(); i+=10) {
        xPos = i;
        // swap images
        if (currentImage == nekoPics[0]) 
            currentImage = nekoPics[1];

        else 
            currentImage = nekoPics[0];
        repaint();
        pause(150);
    }   
}

だから基本的に何が起こるか(これは「ジューシーな部分」だけのコードのすべてではありません、猫は画面を横切って座って座って2回引っ掻くはずです、私はちょうど全体を使用していたので配列の助けを得ました他のifステートメントの山、そしてそれが不必要であることを私は知っていました猫は中央に走り、引っ掻き、そしてループで引っ掻き続けます、明白な理由のために、私はそれを動かす方法に混乱していますスクラッチをループし続けるのではなく、moveOutメソッドに追加します。これが少し不明確な場合は申し訳ありませんが、私はこれに非常に慣れていないので、我慢してください。

前もって感謝します

4

2 に答える 2

2

あなたの問題は無限ループと呼ばれています...代わりに

private void scratch() {
    for (int i = xPos; i < getWidth();) {

これは読むべきです

private void scratch() {
    for (int i = 0; i < 2*<how many frames the scratching takes>; i++) {
    // **UPDATE** the xPos=i; shouldn't be here!!!

説明:

moveIn() 関数からループ定義をコピーしたようですが、その場合は正当なようです。画面の中央に到達するまで、何かが起こります。しかし、scratch()関数内ではスプライトが動かない、画面の端まで届かない…。<how many frames the scratching takes>その番号をプレースホルダーに入れる必要があり、それは機能するはずです。

を編集xPos=iます。scratch()...に存在するべきではありません

于 2013-02-22T13:47:19.830 に答える
-1

forステートメントの最後にi ++を置くscratch()でiをインクリメントしていません。

for (int i = xPos; i < getWidth(); i++)
于 2013-02-22T13:47:13.973 に答える