/** * 初期化位置を特定する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); }
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; }