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

它只是一个普通的数组元素赋值表达式——但使用从charto的隐式转换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 回答