Person 实体。
清单 9. 创建相同类型的实体
/** initialize paths */
protected static void initLoop (BuildingManager manager, ImageIcon icon,
int[] locs, String[] names,
int [] starts, int[] appear, int[][][] stops)
{
LinkedList startPts = (LinkedList)manager.
getAvailableStartingPoints();
// for all specified locations - create a Person
for (int i = 0; i < locs.length; i++) {
JLabel label = new JLabel(names[i], icon, JLabel.CENTER);
label.setFont(new Font(label.getFont().getName(),
label.getFont().getStyle(), 20));
Person person = new Person(manager, label,
(Point2D)startPts.get(
Math.min(startPts.size() - 1, locs[i])),
starts[i]);
person.setAppearTick(appear[i]);
// defines stop locations for each Person
for (int j = 0; j < stops[i].length; j++) {
person.addStop(stops [i][j][0], stops[i][j][1]);
}
manager.addEntity (person);
}
}
Java:在二维动画中使用基于图像的路径(12)
时间:2011-08-31 IBM
清单 10 用清单 9 中的 initLoop 代码定义了一组 Person 实体。这段代码 使用几个平行的数组(根据 locs 数组的长度)提供有关要创建的对象的信息。 locs 数组为用控制路径提供的一组定义好的开始位置提供了索引。 starts 值指 定在什么时间让 Person 开始移动。 appear 值定义了什么时候应当让 Person 变为可见(通常是在开始移动之前)。 stops 值指定每个 Person 可以有的停止 点(可能有多个)。
尽管下面显示的代码是以手工键入值,但是也可以通过增加表示位置实体状态 的新颜色来从控制路径获得大多数这些输入值。这种增强可以简化这些值的输入 ,并减少控制路径改变时出错的可能性。
清单 10. 创建所有 Person 实体
/** Make some demo people */
static public void createPeople (BuildingManager manager,
ImageIcon employIcon,
ImageIcon fireIcon,
ImageIcon disabledIcon)
{
// Main character - ALEX
int locs[] = new int[] {42};
String names[] = new String[] {"Alex"};
int starts[] = new int[] { 300 };
int appear[] = new int[] { 0 };
int stops[][][] = new int[][][] {{}};
initLoop(manager, employIcon, locs, names, starts, appear, stops);
// Some disabled people
locs = new int[] { 39, 45 };
names = new String[] { "Karen", "Mike" };
starts = new int[] { 0, 0};
appear = new int[] { 0, 0 };
stops = new int[][][] {{{1, 164}, {560, 20}},
{{1, 141}, {460, 30}}};
initLoop(manager, disabledIcon, locs, names, starts, appear, stops);
// Some Assisters
locs = new int[] {44, 49, 37, 46};
names = new String[] { "Tom", "Joe", "Cathy", "Larry" };
starts = new int[] { 0, 0, 0, 0};
appear = new int[] { 0, 0, 0, 0 };
stops = new
|