Java 버전 특유의 주의점

업데이트: 2023/01/26

할당자, 메모리 관련

Cubism SDK for Native와는 달리, 불필요해진 변수나 오브젝트는 가비지 콜렉션에 의해 해방되기 때문에, 이들에 대해서 적절히 참조를 끊을 필요가 있습니다.
또한 위와 같은 이유로 CubismFramework.startUp()의 첫 번째 인수에 할당자(ICubismAllocator)를 전달할 필요는 없습니다.

자세한 내용은 「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)」을 봐 주세요.

이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.