站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题TiledLayer的createAnimatedTile()方法倒底应该怎么用啊!

TiledLayer的createAnimatedTile()方法倒底应该怎么用啊!

摘要: TiledLayer的createAnimatedTile()方法倒底应该怎么用啊!


TiledLayer的createAnimatedTile()方法倒底应该怎么用啊!
如下两段代码,第一段加了一个 -1,运行没问题,第二段加了一个 -4,却提示有错误.

---------------------------------------------------------------------------------------------
以下是没有问题的.
---------------------------------------------------------------------------------------------
int[][] map0 = {
{ 1, 1, 1, 6, 6, 6, 3, 4, 3},
{-1, 1, 1, 0, 5, 0, 4, 4, 4},
{ 1, 1, 1, 0, 5, 0, 3, 4, 3},
{ 1, 1, 1, 0, 5, 0, 4, 3, 4},
{ 1, 1, 1, 0, 5, 0, 4, 4, 4},
{ 1, 1, 1, 0, 5, 0, 3, 4, 3},
{ 1, 1, 1, 6, 6, 6, 4, 3, 4}
};

.....
backGroundLayer.createAnimatedTile(1);
for(row=0;rowfor(column=0;columnSystem.out.println(row + " " + column + " " + map0[row][column]);
backGroundLayer.setCell(column,row,map0[row][column]);
}
}

---------------------------------------------------------------------------------------------
以下是错误的.
---------------------------------------------------------------------------------------------

int[][] map0 = {
{1, 1, 1, 6, 6, 6, 3,-4, 3},
{1, 1, 1, 0, 5, 0, 4, 4, 4},
{1, 1, 1, 0, 5, 0, 3, 4, 3},
{1, 1, 1, 0, 5, 0, 4, 3, 4},
{1, 1, 1, 0, 5, 0, 4, 4, 4},
{1, 1, 1, 0, 5, 0, 3, 4, 3},
{1, 1, 1, 6, 6, 6, 4, 3, 4}
};


.....
backGroundLayer.createAnimatedTile(4);
for(row=0;rowfor(column=0;columnSystem.out.println(row + " " + column + " " + map0[row][column]);
backGroundLayer.setCell(column,row,map0[row][column]);//会在这里发生错误.!!!!!!!!!
}
}

------------------------------------------------------------------------------------------------
以下是第二段的运行提示:
-------------------------------------------------------------------------------------------------
Running with storage root MediaControlSkin
Running with locale: Chinese_Taiwan.950
0 0 1
0 1 1
0 2 1
0 3 6
0 4 6
0 5 6
0 6 3
0 7 -4
startApp threw an Exception
java.lang.IndexOutOfBoundsException
java.lang.IndexOutOfBoundsException
at javax.microedition.lcdui.game.TiledLayer.setCell(+79)
at SCanvas.start(+144)
at PopoMIDlet.startApp(+22)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+116)
Execution completed.
885449 bytecodes executed
5 thread switches
894 classes in the system (including system classes)
4617 dynamic objects allocated (132244 bytes)
3 garbage collections (104868 bytes collected)


你把错误的那段代码的map数据改了,把-4变成-1就o了。
注意,显示的背景中-1地方的图片代替的是在你图片中的第4张chip。


TCL521(远方):
非常感谢,准备给你30分,如果在回答我下面这个问题,我就把余下的20分送给你.

动画贴砖的索引是不是从 -1 开始?然后递减 ?
第一个动画贴砖要用setAnimatedTile(-1,x)
第二个的就是setAnimatedTile(-2,x)??

我在书上看的好像不是这样的噢!


-1 ,-2是你自己在map数组中设的!
这个是必须的,在内部它自己会有自己的索引值。
和你后来createAnimatedTile(x)是对应的,也就是说他们之间有影射的关系。
一定是从-1开始。
你说的第一个动画是setAnimated(-1,x),随便的,如果你的地图上有-1,-2,-3,-4,-5,那么就可以setAnimated(-5,x),setAnimated(-4,x),setAnimated(-3,x).
这个过程只不过是换图的过程罢了。


by the way,分对我来说没必要,不是看着分去的,CSDN是应该互相帮助的。


谢谢,
偶现在是业余的,刚学还不到仨星期.
不过,相信不出两年,我就要转到这行了.



↑返回目录
前一篇: 新手求教J2ME Thread无法停止的问题 望指点
后一篇: Jakarta Commons HttpClient 是否支持j2me啊?