...
This commit is contained in:
parent
bba9915be7
commit
b3de7b808d
@ -65,7 +65,7 @@ export class BezierCurveAnimation extends Component {
|
||||
/** 更新事件 */
|
||||
@property({
|
||||
displayName: '更新事件',
|
||||
tooltip: '(总曲线Y_yN, 当前缓动下标_indexN, 当前缓动曲线Y_yN)',
|
||||
tooltip: '(当前缓动曲线Y_yN, 当前缓动下标_indexN)',
|
||||
type: [cc.EventHandler]
|
||||
})
|
||||
updateEventAS: cc.EventHandler[] = [];
|
||||
@ -92,11 +92,28 @@ export class BezierCurveAnimation extends Component {
|
||||
* @param endIndexN_ 缓动结束下标
|
||||
* @returns
|
||||
*/
|
||||
startTween(startIndexN_?: number, endIndexN_ = (startIndexN_ ?? 0) + 1): cc.Tween<any> {
|
||||
startTween(startIndexN_?: number): cc.Tween<any>;
|
||||
startTween(tweenNS_?: number[]): cc.Tween<any>;
|
||||
startTween(args_?: number | number[]): cc.Tween<any> {
|
||||
/** 缓动队列 */
|
||||
let tweenUnitAs = this.tweenUnitAS;
|
||||
if (startIndexN_ !== undefined) {
|
||||
tweenUnitAs = tweenUnitAs.slice(startIndexN_, endIndexN_);
|
||||
|
||||
// 获取缓动队列
|
||||
if (args_ !== undefined) {
|
||||
if (typeof args_ === 'number') {
|
||||
tweenUnitAs = tweenUnitAs.slice(args_, 1);
|
||||
} else {
|
||||
tweenUnitAs = [];
|
||||
args_.forEach((vN) => {
|
||||
tweenUnitAs.push(this.tweenUnitAS[vN]);
|
||||
});
|
||||
}
|
||||
tweenUnitAs = tweenUnitAs.filter((v) => Boolean(v));
|
||||
}
|
||||
if (!tweenUnitAs.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
/** 总时间(秒) */
|
||||
let totalTimeSN = tweenUnitAs.reduce((preValue, currValue) => preValue + currValue.timeSN, 0);
|
||||
/** 时间占比 */
|
||||
@ -147,13 +164,12 @@ export class BezierCurveAnimation extends Component {
|
||||
let posN = (ratioN - lastTimeRatioN) / timeRangeN;
|
||||
/** 曲线位置 */
|
||||
let yN = curveFS[tweenIndexN](posN);
|
||||
let y2N = yN * timeRangeN + lastTimeRatioN;
|
||||
// 缓动切换事件触发
|
||||
if (lastTweenIndexN !== tweenIndexN) {
|
||||
this.emit('tweenSwitchEventAS', lastTweenIndexN);
|
||||
}
|
||||
// 更新事件触发
|
||||
this.emit('updateEventAS', y2N, tweenIndexN, yN);
|
||||
this.emit('updateEventAS', yN, tweenIndexN);
|
||||
// 更新缓动下标
|
||||
lastTweenIndexN = tweenIndexN;
|
||||
}
|
||||
|
@ -51,8 +51,6 @@ export class RollingLottery extends Component {
|
||||
private _selfRect = cc.rect();
|
||||
/** 上次曲线 Y */
|
||||
private _lastCurveYN = 0;
|
||||
/** 当前缓动下标 */
|
||||
private _currTweenIndexN = 0;
|
||||
/** 当前滚动配置 */
|
||||
private _scrollConfig: RollingLotteryScrollConfig;
|
||||
/** 父节点中心点矩形 */
|
||||
@ -459,11 +457,11 @@ export class RollingLottery extends Component {
|
||||
// 更新移动距离
|
||||
this._updateMoveDist(indexN_);
|
||||
// 开始滚动
|
||||
this._currTweenIndexN = this._scrollConfig.tweenIndexN;
|
||||
this.curveComp.startTween(this._currTweenIndexN);
|
||||
this.curveComp.startTween(this._scrollConfig.tweenIndexNS);
|
||||
}
|
||||
/* ------------------------------- 自定义事件 ------------------------------- */
|
||||
private _eventUpdate(yN_: number, indexN_: number, y2N_: number): void {
|
||||
private _eventUpdate(yN_: number, indexN_: number): void {
|
||||
cc.log(yN_, yN_);
|
||||
if (this.dire === RollingLotteryDirection.HORIZONTAL) {
|
||||
cc.error('未实现');
|
||||
// ...
|
||||
@ -476,14 +474,8 @@ export class RollingLottery extends Component {
|
||||
|
||||
private _eventEnd(): void {
|
||||
this._scrollB = false;
|
||||
|
||||
// 继续缓动
|
||||
if (this._scrollConfig.nextPlayB && ++this._currTweenIndexN < this.curveComp.tweenUnitAS.length) {
|
||||
this.curveComp.startTween(this._currTweenIndexN);
|
||||
} else {
|
||||
this.scrollEndEvent.emit([]);
|
||||
this._scrollConfig.endCBF?.();
|
||||
}
|
||||
this.scrollEndEvent.emit([]);
|
||||
this._scrollConfig.endCBF?.();
|
||||
}
|
||||
/* ------------------------------- 节点事件 ------------------------------- */
|
||||
private _nodeChildAdded(): void {
|
||||
@ -499,10 +491,8 @@ class RollingLotteryScrollConfig {
|
||||
constructor(init_?: RollingLotteryScrollConfig) {
|
||||
Object.assign(this, init_);
|
||||
}
|
||||
/** 指定缓动单元下标 */
|
||||
tweenIndexN? = 0;
|
||||
/** 继续下个缓动单元播放 */
|
||||
nextPlayB? = false;
|
||||
/** 缓动队列 */
|
||||
tweenIndexNS?: number[];
|
||||
/** 结束回调 */
|
||||
endCBF?: () => void;
|
||||
}
|
||||
|
2785
assets/main.scene
2785
assets/main.scene
File diff suppressed because it is too large
Load Diff
@ -8,17 +8,19 @@ export class main extends Component {
|
||||
/* ------------------------------- segmentation ------------------------------- */
|
||||
start() {
|
||||
let comp = this.node.getComponentInChildren(RollingLottery);
|
||||
// comp.loop(1500);
|
||||
// let indexN = 0;
|
||||
// this.node.on(
|
||||
// cc.Node.EventType.TOUCH_END,
|
||||
// () => {
|
||||
// comp['_scrollChild'](cc.v3(0, -50));
|
||||
// comp.scroll(0, {});
|
||||
// },
|
||||
// this
|
||||
// );
|
||||
comp.scroll(10, {});
|
||||
|
||||
comp.reset();
|
||||
comp.loop(-1500);
|
||||
// comp.reset();
|
||||
// comp.loop(-1500);
|
||||
// setTimeout(() => {
|
||||
// comp.scroll(-10, {
|
||||
// tweenIndexN: 3,
|
||||
@ -35,11 +37,11 @@ export class main extends Component {
|
||||
node_.getComponentInChildren(cc.Label).string = indexN_ + '';
|
||||
}
|
||||
|
||||
centerNodeEvent(indexN_: number): void {
|
||||
eventCenterNode(indexN_: number): void {
|
||||
cc.log('当前下标', indexN_);
|
||||
}
|
||||
|
||||
scrollEndEvent(): void {
|
||||
eventScrollEnd(): void {
|
||||
cc.log('滚动结束');
|
||||
}
|
||||
}
|
||||
|
2963
assets/滚动根节点.prefab
2963
assets/滚动根节点.prefab
File diff suppressed because it is too large
Load Diff
@ -1,13 +0,0 @@
|
||||
{
|
||||
"ver": "1.1.32",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "3fe6ec1e-8b71-4777-bd7f-a9a1bb2debef",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "滚动根节点"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user