/** * 全体のフレーム数から最後に待機するアニメーションを生成する * * @param domLayer * @return */ protected CCXAction createLastDelayTime(DOMLayer domLayer) { int size = domLayer.getDomFrameList().size(); DOMFrame frame = domLayer.getDomFrameList().get(size - 1); // 最終フレームを取得する int index = frame.getIndex(); int duration = frame.getDuration(); if ((index + duration) < Config.MAX_FRAME) { int delayTime = Config.MAX_FRAME - (index + duration); return createDelayTime(delayTime); } return null; }
/** * Flash全体のFrame長さを取得する * * @param domLayer * @return */ public int findMaxFrame(List<DOMLayer> domLayerList) { int maxFrame = 0; for (DOMLayer dom : domLayerList) { List<DOMFrame> domFrameList = dom.getDomFrameList(); for (DOMFrame frame : domFrameList) { if (maxFrame < frame.getIndex() + frame.getDuration()) { maxFrame = (frame.getIndex() + frame.getDuration()); } } } return maxFrame; }
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; }