在AndEngine游戏中重用障碍物

时间:2015-08-01 03:37:51

标签: android

我在制作使用And Engine的游戏时遇到问题..在2辆汽车游戏中,两个障碍物从屏幕顶部落下,当一个人到达汽车高度* 4时,第二个障碍物开始下降。当第一个障碍物到达相机的最大高度时重置其位置......当第二个障碍物达到汽车的高度* 4时,再次第一个障碍物从屏幕顶部开始落下这里是一些代码..

new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                 rt_left_obstacle1=new Rectangle(0,0,20,20,MainActivity.getSharedInstance().getVertexBufferObjectManager());
                 rt_left_obstacle2=new Rectangle(0,0,20,20,MainActivity.getSharedInstance().getVertexBufferObjectManager());
                 rt_left_obstacle1.setPosition((mCamera.getWidth()/5)/2,0);
                  rt_left_obstacle2.setPosition((mCamera.getWidth()/5)/2,-mCamera.getHeight());  
                 rt_left_obstacle1.setColor(1,0,0);
                    rt_left_obstacle2.setColor(1,0,0);
                  for(int i=100;i<=mCamera.getHeight();i=i+100){
                     rt_left_obstacle1.registerEntityModifier(new MoveYModifier(3,rt_left_obstacle1.getY(),mCamera.getHeight()));
                     if(i==left_car.getHeight()*4){
                         rt_left_obstacle2.registerEntityModifier(new MoveYModifier(2,rt_left_obstacle2.getY(),mCamera.getHeight())); 

                     }
                     if(i==mCamera.getHeight()){
                          rt_left_obstacle1.setPosition((mCamera.getWidth()/5)/2,0);

                     }
                         if(rt_left_obstacle2.getY()==mCamera.getHeight()){
                          rt_left_obstacle2.setPosition((mCamera.getWidth()/5)/2,-mCamera.getHeight());  
                     }

            }

            }
        }, 2000,200);

1 个答案:

答案 0 :(得分:0)

使用andengine中的GenericPool类。它会创建精灵(在你的情况下说它是障碍物),当你用精灵完成时,当你想要再次使用精灵时,它会将精灵再循环到池中你只需从池中获取它......你不必一次又一次地创建精灵... google GenericPool你会发现很多例子和教程...... :)