Java版特有的注意事项

最終更新: 2023年1月26日

分配器、内存记忆相关

与Cubism SDK for Native不同,垃圾回收会释放您不再需要的变量和物体,因此您需要正确地取消参考它们。
另外,由于上述原因,没有必要将分配器(ICubismAllocator)传递给CubismFramework.startUp()的第一个参数。

有关详细信息,请参考“如何直接使用CubismJavaFramework”。

关于纹理格式

由于Android的BitmapFactory.decodeStream方法使用Premultiplied Alpha方法生成图像,因此需要将范例LAppDefine中定义的PREMULTIPLIED_ALPHA_ENABLE设置为true。

if (LAppDefine.PREMULTIPLIED_ALPHA_ENABLE) {
    this.<CubismRendererAndroid>getRenderer().isPremultipliedAlpha(true);
} else {
    this.<CubismRendererAndroid>getRenderer().isPremultipliedAlpha(false);
}

关于Cubism SDK for Java中回调函数的处理

在Cubism SDK for Java中,与Native和Web一样,有些地方可以注册回调函数,但由于Java规范,它们的使用方式有所不同。
由于方法本身不能作为物体进行管理,因此回调函数物体是通过让用户创建一个实装此处提供的接口的类来处理的。

private static class FinishedMotion implements IFinishedMotionCallback {
    @Override
    public void execute(ACubismMotion motion) {
        LAppPal.printLog("Motion Finished: " + motion);
    }
}

private static final FinishedMotion finishedMotion = new FinishedMotion();

传递回调时,请务必将此物体作为函数参数传递。

public void onTap(float x, float y) {
    ...
    for (LAppModel model : models){
        ...
        model.startRandomMotion(MotionGroup.TAP_BODY.getId(), Priority.NORMAL.getPriority(), finishedMotion);
        ...
    }
}

更具体的使用方法请参考“回调退出动态播放(Java)”。

请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。