- for指定数量的钻石,并在某个区域内随机设定位置
- 定一个收集点(消失的位置,一般为状态栏)
- 进行收集效果动画
- 各延迟0-0.5秒不定时间
- 0.3秒放大至1.2倍大
- 0.1秒放大至1倍大(2,3步实现放大一下的效果)
- 各延迟0.5-0.7秒不定时间
- 进行贝塞尔曲线运动(cc.bezierTo()函数,朝收集点)
//红包显示及收集
showHbAndCollect(parentNode,targer,num = 6){
for(let i = 0; i < num; ++i){
let itemNode = cc.instantiate(this.hbPrefab);
parentNode.addChild(itemNode);
itemNode.position = cc.v2( -200 + 400*Math.random(),-400 + 400*Math.random() );
let desPosition = targer.convertToWorldSpaceAR (cc.v2(0,0));
desPosition = parentNode.convertToNodeSpaceAR(desPosition);
let bezier1 = [itemNode.position, cc.v2(-400 + 200*Math.random(), (itemNode.position.y+desPosition.y)/2 ) , desPosition ];
let bezierTo1 = cc.bezierTo(0.25 + 0.25*Math.random() , bezier1);
itemNode.runAction(cc.sequence(cc.delayTime(0.8*Math.random()), cc.scaleTo(0.3,1.2), cc.scaleTo(0.1,1) ,cc.delayTime(0.5+0.2*Math.random()), bezierTo1, cc.callFunc(function () {
itemNode.removeFromParent();
itemNode.destroy();
if(targer != null){
targer.runAction(cc.sequence(
cc.scaleTo(0.1,1.2),
cc.scaleTo(0.07,0.96),
cc.scaleTo(0.03,1),
));
}
}, this)));
}
//数额刷新
targer.emit('refUI');
},
具体效果有空再写