|
@@ -1,5 +1,6 @@
|
|
|
-import { Component, OnInit } from '@angular/core';
|
|
|
+import { Component, Input, OnInit } from '@angular/core';
|
|
|
import { MessageService } from '../../../services/message.service';
|
|
|
+declare const Vap: any;
|
|
|
@Component({
|
|
|
selector: 'app-flutter-comp',
|
|
|
templateUrl: './flutter-comp.component.html',
|
|
@@ -8,11 +9,48 @@ import { MessageService } from '../../../services/message.service';
|
|
|
imports: []
|
|
|
})
|
|
|
export class FlutterCompComponent implements OnInit {
|
|
|
-
|
|
|
+ @Input('domId') domId: string = 'vap-gift'
|
|
|
constructor(
|
|
|
public msgSerrvice: MessageService
|
|
|
- ) { }
|
|
|
-
|
|
|
+ ) {
|
|
|
+ this.msgSerrvice.eventplay$.subscribe((data) => {
|
|
|
+ this.playGift(data);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ playGift(giftModule:any){
|
|
|
+ console.log(giftModule);
|
|
|
+ this.msgSerrvice.isPlayer = true
|
|
|
+ let dom = document.getElementById(this.domId);
|
|
|
+ console.log(dom);
|
|
|
+ let vapPlayer = new Vap.default({
|
|
|
+ container: dom, // 要渲染的载体,dom元素
|
|
|
+ src: giftModule.gift?.video, // vap动画地址
|
|
|
+ config: giftModule.gift?.config, // 播放vap动画需要的 json文件。必填
|
|
|
+ width: window.innerWidth, // 容器宽度
|
|
|
+ height: window.innerHeight, // 容器高度
|
|
|
+ fps: 30, // 帧数,json文件中有这个视频的帧数的,可以看一下,
|
|
|
+ mute: false, // 静音
|
|
|
+ type: 2, // 组件基于type字段做了实例化缓存,不同的VAP实例应该使用不同的type值(如0、1、2等)
|
|
|
+ loop: false, // 循环
|
|
|
+ precache: true, // 预加载视频,下载完再播。小动画建议边下边播,大动画还是先下后播吧,因为太大了或者网络不好,会一卡一卡的。
|
|
|
+ beginPoint: 0, // 起始播放时间点(单位秒),在一些浏览器中可能无效
|
|
|
+ accurate: true, // 是否启用精准模式(使用requestVideoFrameCallback提升融合效果,浏览器不兼容时自动降级)
|
|
|
+ });
|
|
|
+ vapPlayer.play(); // 开始播放
|
|
|
+ vapPlayer.on('ended', () => {
|
|
|
+ // 监听播放完成的事件
|
|
|
+ vapPlayer.destroy();
|
|
|
+ vapPlayer = null;
|
|
|
+ console.log('播放结束');
|
|
|
+ this.msgSerrvice.giftLogMap.pop();
|
|
|
+ if(this.msgSerrvice.giftLogMap.length > 0){
|
|
|
+ this.playGift(this.msgSerrvice.giftLogMap.slice(-1)[0]);
|
|
|
+ }else{
|
|
|
+ this.msgSerrvice.isPlayer = false
|
|
|
+ }
|
|
|
+ });
|
|
|
+ vapPlayer.on('playering', function() { console.log('playering'); })
|
|
|
+ }
|
|
|
ngOnInit() {
|
|
|
}
|
|
|
}
|