コード例 #1
0
  /**
   * 初期化位置を特定するDOMFrameを探す
   *
   * @param domFrameList
   * @return
   */
  public DOMFrame findInitDOMFrame(List<DOMFrame> domFrameList) {

    for (DOMFrame frame : domFrameList) {
      DOMObject domObj = frame.getDomObject();
      if (domObj != null && domObj.getDomObjectType() != DomObjectType.WHITE) {
        return frame;
      }
    }
    return domFrameList.get(0);
  }
コード例 #2
0
  public List<CCXAction> createAnimation(CCXActionList actionList, DOMLayer domLayer) {
    List<CCXAction> createActionList = new ArrayList<CCXAction>();
    final DOMFrame initDom = findInitDOMFrame(domLayer.getDomFrameList());
    DOMItem domItem = domLayer.getDomItem();
    // 位置だけ正式版に調整
    domLayer
        .getDomFrameList()
        .forEach(
            (dom) -> {
              if (!dom.equals(initDom)) {
                DOMCalc.calcScaleRotation(domItem, dom);
                DOMCalc.calcDomFramePos(dom);
              }
            });

    // 初期位置をセットする

    DOMFrame preDom = findInitDOMFrame(domLayer.getDomFrameList());
    CCXAction act = null;

    // ぐぬぬ、closureにするとpreDom操作がしづらい
    for (DOMFrame dom : domLayer.getDomFrameList()) {

      DomObjectType objType = dom.getDomObject().getDomObjectType();

      // 次が空白フレームだった
      CCXAction whiteNext = whiteFrameIsNext(preDom, dom);
      if (whiteNext != null) {
        createActionList.add(whiteNext);
      }

      // 最初が空白の場合
      if (objType == DomObjectType.WHITE) {
        act = createDelayTime(dom.getDuration());
      } else {
        act = createAction(preDom, dom);

        // 前が空白フレームだった
        CCXAction whiteBefore = whiteFrameIsBefore(preDom, dom);
        if (whiteBefore != null) {
          createActionList.add(whiteBefore);
        }

        preDom = dom;
      }

      if (act != null) {
        createActionList.add(act);
      }
    }

    // 最終待機を生成
    act = createLastDelayTime(domLayer);
    if (act != null) {
      createActionList.add(act);
    }

    setList(actionList, createActionList);

    return createActionList;
  }