Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 对同一对象和渲染使用多个精灵图纸_Android_Opengl Es 2.0_Andengine_Sprite_Sprite Sheet - Fatal编程技术网

Android 对同一对象和渲染使用多个精灵图纸

Android 对同一对象和渲染使用多个精灵图纸,android,opengl-es-2.0,andengine,sprite,sprite-sheet,Android,Opengl Es 2.0,Andengine,Sprite,Sprite Sheet,我为我的对象(鹦鹉)准备了多张精灵床单,比如吃东西、从左向右移动、从右向左移动等等。我正在使用andenginegles2.0。我应该如何实施它?每次我必须使用不同的精灵表,分离前一个,并在同一位置添加新的一个。这会很忙的 这里有谁已经实现了这种场景?如果我对每一个动画使用一个精灵表,它的大小会增加,并且会抛出内存不足的异常 这是我的代码,用于执行不同精灵图纸的动画 public void performEatingAnimation(Bird b) { float x = b.getS

我为我的对象(鹦鹉)准备了多张精灵床单,比如吃东西、从左向右移动、从右向左移动等等。我正在使用andenginegles2.0。我应该如何实施它?每次我必须使用不同的精灵表,分离前一个,并在同一位置添加新的一个。这会很忙的


这里有谁已经实现了这种场景?如果我对每一个动画使用一个精灵表,它的大小会增加,并且会抛出内存不足的异常

这是我的代码,用于执行不同精灵图纸的动画

public void performEatingAnimation(Bird b) {
    float x = b.getSelectedAnimatedsprite().getX();
    float y = b.getSelectedAnimatedsprite().getY();
    b.getSelectedAnimatedsprite().setVisible(false);

    b.getSelectedAnimatedsprite().detachSelf();
    b.setSelectedAnimatedsprite(b.getEatingAnimatedsprite());

    attachObjectWithNewPosition(b.getSelectedAnimatedsprite(), x, y);
    b.getSelectedAnimatedsprite().animate(60, 2);

}

public void performWalkAnimation(Bird b) {
    float x = b.getSelectedAnimatedsprite().getX();
    float y = b.getSelectedAnimatedsprite().getY();
    b.getSelectedAnimatedsprite().setVisible(false);

    b.getSelectedAnimatedsprite().detachSelf();
    b.setSelectedAnimatedsprite(b.getWalkingAnimatedsprite());

    attachObjectWithNewPosition(b.getSelectedAnimatedsprite(), x, y);
    b.getSelectedAnimatedsprite().animate(60, 0)
 }
下面是我的setSelected方法来执行AnimatedSprite的深度复制

public void setSelectedAnimatedsprite(AnimatedSprite selectedAnimatedsprite) {
    AnimatedSprite sprite = new AnimatedSprite(
            selectedAnimatedsprite.getX(), selectedAnimatedsprite.getY(),
            selectedAnimatedsprite.getTiledTextureRegion().deepCopy(),
            selectedAnimatedsprite.getVertexBufferObjectManager());

    this.selectedAnimatedsprite = sprite;
}

我必须深度复制选定的精灵,因为如果我不这样做,它将传递引用并设置为可见(false),并且在行走AnimatedSprite和进食AnimatedSprite时将发生分离,而我无论如何都不希望发生这种情况

您解决了这个问题吗?我现在也处于同样的情况