應(yīng)用全部
調(diào)節(jié)應(yīng)用全部通過(guò)循環(huán)執(zhí)行單次應(yīng)用來(lái)實(shí)現(xiàn),導(dǎo)致重復(fù)刷新project芬探,造成卡頓;
解決方案:對(duì)所有片段修改屬性后神得,執(zhí)行一次刷新;
同一個(gè)對(duì)象賦值給多個(gè)片段灯节,導(dǎo)致修改單個(gè)片段循头,其他片段也被修改;
解決方案:cloneObject來(lái)賦值炎疆,
命名規(guī)范:不應(yīng)該命名 ***not****(autoSubtitleNotApplyAll)卡骂,否定命名的方式不符合一般人理解,后期維護(hù)形入、閱讀也很麻煩全跨,如果要修改默認(rèn)值,可以在構(gòu)造函數(shù)內(nèi)對(duì)變量重新做初始化
關(guān)于素材在project/預(yù)覽中的尺寸問(wèn)題
一個(gè)視頻片段在預(yù)覽框內(nèi)的寬高:
PreviewWidth = AssetWidth * AssetScale
PreviewHeight = AssetHeight * AssetScale
AssetScale = KeyFrameScale * ScaleInPreview * ?fitFillScale
參數(shù)說(shuō)明:
AssetScale: ??素材縮放倍數(shù)
AssetWidth/AssetHeight: ??素材本身的寬高
KeyFrameScale: 關(guān)鍵幀縮放參數(shù)
fitFillScale:素材撐滿 Project 的模式 fit/fill ?產(chǎn)生的縮放參數(shù)亿遂,由于畫中畫沒有撐滿邏輯浓若,所以對(duì)于畫中畫該參數(shù)為 1
ScaleInPreview:project 適配預(yù)覽視圖產(chǎn)生的縮放參數(shù)
素材在主軌 、畫中畫互切 大小保持一致蛇数;
主軌素材在project寬度:
MainTrackAssetWidthInProject =
MainTrackAssetWidth * MainTrackKeyFrameScale * fitFillScale
主軌素材在project寬度與project寬度比例:
BeforeTransformRation = MainTrackAssetWidthInProject /BeforeTransformProjectWidth
畫中畫素材在project寬度:
SubTrackAssetWidthInProject = SubTrackAssetWidth * SubTrackKeyFrameScale
主軌素材在project寬度與project寬度比例:
AfterTransformRation = SubTrackAssetWidthInProject/AfterTransformProjectWidth
核心邏輯是切換前后素材在project內(nèi)的顯示的寬度和project的寬比列保持一致,兩個(gè)變量應(yīng)該相等:
BeforeTransformRation = AfterTransformRation
對(duì)于主軌轉(zhuǎn)畫中畫 是已知MainTrackKeyFrameScale計(jì)算SubTrackKeyFrameScale
對(duì)于畫中畫轉(zhuǎn)主軌 是已知SubTrackKeyFrameScale計(jì)算MainTrackKeyFrameScale
參數(shù)說(shuō)明:
MainTrackKeyFrameScale:主軌關(guān)鍵幀縮放參數(shù)
SubTrackKeyFrameScale:畫中畫關(guān)鍵幀縮放參數(shù)
BeforeTransformProjectWidth:轉(zhuǎn)換前project寬度
AfterTransformProjectWidth:轉(zhuǎn)換前后project寬度