0

オープンソースのゲーム コードを分析していましたが、setDefaultSpecialChars() メソッドと setDefaultSmallAlphabet() がわかりません。これらのステートメントfontCharTable[':']=1 + indexOf_Point;fontCharTable['a'+i] = indexOf_a + i;は、私にとって新しいものです。

 import javax.microedition.midlet.*;
 import javax.microedition.lcdui.*;

public class GFont {


public int[] fontCharTable = new int[256];

public void setFontCharTableDefaults(boolean specialChars) {
    setDefaultSmallAlphabet(0);
    setDefaultBigAlphabet(0);
    setDefaultDigits(27);
    if (specialChars) {
        setDefaultSpecialChars(37);
    }
}

public void setDefaultSpecialChars(int indexOf_Point) {
    fontCharTable['.']=0 + indexOf_Point;
    fontCharTable[':']=1 + indexOf_Point;
    fontCharTable[',']=2 + indexOf_Point;
    fontCharTable[';']=3 + indexOf_Point;
    fontCharTable['?']=4 + indexOf_Point;
    fontCharTable['!']=5 + indexOf_Point;
    fontCharTable['(']=6 + indexOf_Point;
    fontCharTable[')']=7  + indexOf_Point;
    fontCharTable['+']=8 + indexOf_Point;
    fontCharTable['-']=9 + indexOf_Point;
    fontCharTable['*']=10 + indexOf_Point;
    fontCharTable['/']=11 + indexOf_Point;
    fontCharTable['=']=12  + indexOf_Point;
    fontCharTable['\'']=13 + indexOf_Point;
    fontCharTable['_']=14 + indexOf_Point;
    fontCharTable['\\']=15 + indexOf_Point;
    fontCharTable['#']=16 + indexOf_Point;
    fontCharTable['[']=17 + indexOf_Point;
    fontCharTable[']']=18 + indexOf_Point;
    fontCharTable['@']=19 + indexOf_Point;
    fontCharTable['ä']=20 + indexOf_Point;
    fontCharTable['ö']=21 + indexOf_Point;
    fontCharTable['ü']=22 + indexOf_Point;
    fontCharTable['Ä']=fontCharTable['ä'];
    fontCharTable['Ö']=fontCharTable['ö'];
    fontCharTable['Ü']=fontCharTable['ü'];
}


public void setDefaultSmallAlphabet(int indexOf_a) {
    for (i=0; i<26; i++) {
        fontCharTable['a'+i] = indexOf_a + i;
    }
}


}
4

2 に答える 2

2

これは単なる通常の配列要素代入式ですが、 からcharへの暗黙的な変換を使用していintます。だからこれを取る:

fontCharTable['+']=8 + indexOf_Point;

今それを次のように考えてください:

char indexAsChar = '+';
int indexAsInt = indexAsChar; // Use implicit conversion
fontCharTable[indexAsInt] = 8 + indexOf_Point;

それは今より明確ですか?

同様にこれ:

for (i=0; i<26; i++) {
    fontCharTable['a'+i] = indexOf_a + i;
}

次のように記述できます。

for (i=0; i<26; i++) {
    int a = 'a';
    int index = a + i'
    fontCharTable[index] = indexOf_a + i;
}
于 2013-01-03T15:00:42.777 に答える
1

奇妙に見えるかもしれませんが、文字をインデックスとして使用しているだけです。

彼らが何をしているかを見たい場合は、デバッガーでコードをステップスルーしてみてください。

于 2013-01-03T15:01:32.627 に答える