Java版特有の注意点

最終更新: 2023年1月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)」をご覧ください。

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。