📄 scenecreator.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class SceneCreator
{
LayerManager layerManager;
private Vector collisionVC;
private static int LT = Graphics.LEFT | Graphics.TOP;
public LayerManager getFrontLayer()
{
layerManager=null;
if(SceneLib.currentSceneIndex==0)
{
int offsetX=10;
int offsetY=10;
Image house1,house2,house3,house4,house1Shadow,house2Shadow,house3Shadow,house4Shadow,fountain,tree;
//fountain=Tools.getImage("/building/fountain.png");
house1 = Tools.getImage("/building/house01.png");
house2 = Tools.getImage("/building/house02.png");
house3 = Tools.getImage("/building/house03.png");
house4 = Tools.getImage("/building/house04.png");
tree=Tools.getImage("/building/tree_up.png");
Sprite treeSprite=new Sprite(tree,48,64);
treeSprite.setPosition(367,52);
//Sprite fountainSprite=new Sprite(fountain,54,32);
//fountainSprite.setFrame(0);
//fountainSprite.setPosition(149,114);
Sprite house1UpSprite=new Sprite(house1, 89, 32);
house1UpSprite.setFrame(0);
Sprite house2UpSprite=new Sprite(house2, 60, 32);
house2UpSprite.setFrame(0);
Sprite house3UpSprite=new Sprite(house3, 55, 32);
house3UpSprite.setFrame(0);
Sprite house4UpSprite=new Sprite(house4, 63, 32);
house4UpSprite.setFrame(0);
house1UpSprite.setPosition(offsetX+15,offsetY+112);
house2UpSprite.setPosition(offsetX+16,offsetY+12);
house3UpSprite.setPosition(offsetX+228,offsetY+75);
house4UpSprite.setPosition(offsetX+135,offsetY+12);
//Image church_up=Tools.getImage("/building/church_up.png");
//Sprite churchSprite=new Sprite(church_up, 80, 72);
//churchSprite.setPosition(335,157);
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
layerManager=new LayerManager();
//加入前景,可挡住角色
layerManager.append(house1UpSprite);
layerManager.append(house2UpSprite);
layerManager.append(house3UpSprite);
layerManager.append(house4UpSprite);
//layerManager.append(churchSprite);
layerManager.append(treeSprite);
//layerManager.append(fountainSprite);
layerManager.append(frontLayer);
}
if(SceneLib.currentSceneIndex==1) //村边树林
{
//MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild_front.map");
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
//collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
layerManager.append(frontLayer);
}
if(SceneLib.currentSceneIndex==2) //山洞
{
}
if(SceneLib.currentSceneIndex==3) //平原
{
//MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild2_front.map");
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
//collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
layerManager.append(frontLayer);
}
if(SceneLib.currentSceneIndex==4) //迷宫
{
//MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild2_front.map");
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
//collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
if(frontLayer!=null)layerManager.append(frontLayer);
}
return layerManager;
}
public LayerManager getBackLayer()
{
layerManager=null;
if(SceneLib.currentSceneIndex==0)
{
int offsetX=10;
int offsetY=10;
Image guide1img = Tools.getImage("/building/guide.png");
MySprite guide1=new MySprite(guide1img, 30, 26);
guide1.addMsg(new Msg("牌子","这里是泥巴村"));
guide1.setChat(true);
ChatSprites.addSprite(guide1);
//Image enemy1img = Tools.getImage("/role/corpse.png");
//Image church_down=Tools.getImage("/building/church_down.png");
//Sprite churchSprite=new Sprite(church_down, 80, 38);
//churchSprite.setPosition(335,157+72);
Image house1,house2,house3,house4,house1Shadow,house2Shadow,house3Shadow,house4Shadow,fountain,tree;
tree=Tools.getImage("/building/tree_down.png");
//fountain=Tools.getImage("/building/fountain.png");
house1 = Tools.getImage("/building/house01.png");
house2 = Tools.getImage("/building/house02.png");
house3 = Tools.getImage("/building/house03.png");
house4 = Tools.getImage("/building/house04.png");
house1Shadow = Tools.getImage("/building/house1_shadow.png");
house2Shadow = Tools.getImage("/building/house2_shadow.png");
house3Shadow = Tools.getImage("/building/house3_shadow.png");
house4Shadow = Tools.getImage("/building/house4_shadow.png");
Sprite treeSprite1=new Sprite(tree,16,20);
treeSprite1.setFrame(0);
Sprite treeSprite2=new Sprite(treeSprite1);
treeSprite2.setFrame(1);
Sprite treeSprite3=new Sprite(treeSprite1);
treeSprite3.setFrame(2);
treeSprite1.setPosition(367,52+64);
treeSprite2.setPosition(367+16,52+64);
treeSprite3.setPosition(367+32,52+64);
/*
Sprite fountainSprite=new Sprite(fountain,54,32);
fountainSprite.setFrame(1);
fountainSprite.setPosition(149,146);
*/
Sprite house1ShadowSprite=new Sprite(house1Shadow, 10, 33);
Sprite house2ShadowSprite=new Sprite(house2Shadow, 10, 33);
Sprite house3ShadowSprite=new Sprite(house3Shadow, 11, 52);
Sprite house4ShadowSprite=new Sprite(house4Shadow, 10, 33);
Sprite house1UpSprite=new Sprite(house1, 89, 32);
Sprite house1DownSprite=new Sprite(house1UpSprite);
house1DownSprite.setFrame(1);
//house1DownSprite.defineCollisionRectangle(0,-3,85,32);
Sprite house2UpSprite=new Sprite(house2, 60, 32);
Sprite house2DownSprite=new Sprite(house2UpSprite);
house2DownSprite.setFrame(1);
//house2DownSprite.defineCollisionRectangle(0,0,58,32);
Sprite house3UpSprite=new Sprite(house3, 55, 32);
Sprite house3Down1Sprite=new Sprite(house3UpSprite);
house3Down1Sprite.setFrame(1);
Sprite house3Down2Sprite=new Sprite(house3UpSprite);
house3Down2Sprite.setFrame(2);
//house3Down1Sprite.defineCollisionRectangle(0,0,56,32);
//house3Down2Sprite.defineCollisionRectangle(0,0,56,32);
Sprite house4UpSprite=new Sprite(house4, 63, 32);
Sprite house4DownSprite=new Sprite(house4UpSprite);
house4DownSprite.setFrame(1);
//house4DownSprite.defineCollisionRectangle(0,0,59,32);
house1DownSprite.setPosition(offsetX+15,offsetY+144);
house2DownSprite.setPosition(offsetX+16,offsetY+44);
house3Down1Sprite.setPosition(offsetX+228,offsetY+107);
house3Down2Sprite.setPosition(offsetX+228,offsetY+139);
house4DownSprite.setPosition(offsetX+135,offsetY+44);
guide1.setPosition(offsetX+240,offsetY+210);
guide1.setFrame(0);
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer midLayer=mapCreator.getLayerByIndex(1);
TiledLayer backLayer=mapCreator.getLayerByIndex(0);
collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
//System.out.println("collisionVC.size()="+collisionVC.size());
layerManager=new LayerManager();
//加入前景,被角色挡住
layerManager.append(treeSprite1);
layerManager.append(treeSprite2);
layerManager.append(treeSprite3);
//layerManager.append(fountainSprite);
//layerManager.append(churchSprite);
layerManager.append(house1DownSprite);
layerManager.append(house2DownSprite);
layerManager.append(house3Down1Sprite);
layerManager.append(house3Down2Sprite);
layerManager.append(house4DownSprite);
layerManager.append(guide1);
layerManager.append(house1ShadowSprite);
layerManager.append(house2ShadowSprite);
layerManager.append(house3ShadowSprite);
layerManager.append(house4ShadowSprite);
layerManager.append(midLayer);
layerManager.append(backLayer);
house1ShadowSprite.setPosition(offsetX+99,offsetY+127);
house2ShadowSprite.setPosition(offsetX+69,offsetY+28);
house3ShadowSprite.setPosition(offsetX+280,offsetY+109);
house4ShadowSprite.setPosition(offsetX+189,offsetY+28);
//addCollisionSprite(layerManager,collisionVC); //障碍点加到当前层里作为判断的道具
//加入房子等自定义的障碍物
if(collisionVC==null)collisionVC=new Vector();
addCollisionBox(collisionVC,house1DownSprite);
addCollisionBox(collisionVC,house2DownSprite);
addCollisionBox(collisionVC,house3Down1Sprite);
addCollisionBox(collisionVC,house3Down2Sprite);
addCollisionBox(collisionVC,house4DownSprite);
addCollisionBox(collisionVC,guide1);
//addCollisionBox(collisionVC,churchSprite);
//addCollisionBox(collisionVC,fountainSprite);
addCollisionBox(collisionVC,treeSprite2);
}
if(SceneLib.currentSceneIndex==1) //村边树林
{
MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
TiledLayer midLayer=mapCreator.getLayerByIndex(1);
TiledLayer backLayer=mapCreator.getLayerByIndex(0);
collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
Image guide1img = Tools.getImage("/building/guide.png");
MySprite guide1=new MySprite(guide1img, 30, 26);
guide1.addMsg(new Msg("路牌","前面是泥巴村"));
guide1.setChat(true);
ChatSprites.addSprite(guide1);
guide1.setPosition(100,25);
guide1.setFrame(0);
addCollisionBox(collisionVC,guide1);
layerManager=new LayerManager();
layerManager.append(guide1);
layerManager.append(midLayer);
layerManager.append(backLayer);
}
if(SceneLib.currentSceneIndex==2) //山洞
{
String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
MapCreator mapCreator=new MapCreator(mapImg,mapData);
TiledLayer back=mapCreator.getLayerByIndex(0);
TiledLayer mid=mapCreator.getLayerByIndex(1);
collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
layerManager.append(mid);
layerManager.append(back);
}
if(SceneLib.currentSceneIndex==3) //平原
{
String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
MapCreator mapCreator=new MapCreator(mapImg,mapData);
TiledLayer backLayer=mapCreator.getLayerByIndex(0);
TiledLayer midLayer=mapCreator.getLayerByIndex(1);
collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
layerManager.append(midLayer);
layerManager.append(backLayer);
}
if(SceneLib.currentSceneIndex==4) //迷宫
{
String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
MapCreator mapCreator=new MapCreator(mapImg,mapData);
TiledLayer backLayer=mapCreator.getLayerByIndex(0);
TiledLayer midLayer=mapCreator.getLayerByIndex(1);
collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
layerManager=new LayerManager();
if(midLayer!=null)layerManager.append(midLayer);
if(backLayer!=null)layerManager.append(backLayer);
}
return layerManager;
}
//加入障碍物对象box
private void addCollisionBox(Vector vc,Sprite sprite)
{
Box box=new Box();
box.x=sprite.getX();
box.y=sprite.getY();
box.w=sprite.getWidth();
box.h=sprite.getHeight();
vc.addElement(box);
}
public Vector getCollisionVC() {
return collisionVC;
}
//换新场景时清除原有场景的障碍物集合
public void clearCollisionVC()
{
collisionVC.removeAllElements();
}
/*
private void addCollisionSprite(LayerManager layerManager,Vector collisionVC)
{
for(int i=0;collisionVC!=null && i<collisionVC.size();i++)
{
Sprite collisionSprite=(Sprite)collisionVC.elementAt(i);
if(collisionSprite!=null)
{
layerManager.append(collisionSprite);
}
}
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -