123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- import {nextTick} from "vue";
- export default {
- data(){
- return {
- queueTime:0
- }
- },
- methods:{
- // 播放礼物动画
- pushGift(item,uid:Array<string | number> | string | number,sendUid){
- if (item.pcplay_image || item.play_image){
- let type = item.gift_type.toString();
- if (type === '1') {
- let resultUid:Array<string | number> = [];
- if (!(uid instanceof Array)) {
- resultUid = [uid]
- } else {
- resultUid = uid;
- }
- let queueData = [];
- // 获取礼物布局信息
- let giftOffsets = this.getInfoOffset('gift-active-'+item.gid);
- if (giftOffsets) {
- if (item.translate) {
- giftOffsets.x = giftOffsets.x + item.translate;
- }
- } else if (!giftOffsets) {
- giftOffsets = this.getInfoOffset('room-gift-container');
- }
- // 获取用户布局信息结果
- resultUid.map((item)=>{
- let result = this.getInfoOffset('user-'+item);
- if (result) {
- if (giftOffsets) {
- queueData.push({
- offset:result,
- giftOffsets,
- ...giftOffsets
- });
- } else {
- queueData.push({
- ...result,
- });
- }
- }
- return result;
- });
- if (queueData.length > 0) {
- this.pushQueue({
- type:type,
- data:queueData,
- item,
- play:!giftOffsets,
- draw:!giftOffsets
- },sendUid);
- } else {
- this.pushQueue({
- type:'2',
- item
- },sendUid);
- }
- } else {
- this.pushQueue({
- type:type,
- item
- },sendUid);
- }
- }
- },
- triggerChangeQueue(useQueueItem){
- if (useQueueItem && useQueueItem.type === '1' && !useQueueItem.play) {
- setTimeout(()=>{
- useQueueItem.data = useQueueItem.data.map((item)=>{
- return {
- ...item,
- ...item.offset,
- }
- });
- useQueueItem.draw = true;
- setTimeout(()=>{
- useQueueItem.play = true;
- },1500);
- },10);
- }
- },
- // 获取用户位置信息
- getInfoOffset(id){
- if (id) {
- let el = document.getElementById(id);
- if (el) {
- return {
- x: this.getOffset(el,'offsetLeft'),
- y: this.getOffset(el,'offsetTop'),
- width: el.offsetWidth,
- height: el.offsetHeight
- }
- }
- }
- return null;
- },
- getOffset(el,offset='offsetLeft'){
- let offsetValue = el[offset] || 0;
- let target = el;
- while (target.offsetParent) {
- offsetValue += target.offsetParent[offset];
- target = target.offsetParent;
- }
- return offsetValue;
- }
- }
- }
|