直播间礼物连击效果

一、需求

           直播间送礼物动画,要求可实现连击效果。


二、Demo地址

      Git地址点这里


三、各个模块功能(只说功能,代码直接去看Demo吧)

1、礼物信息展示view:YTGiftView

       用于显示礼物信息以及做动画效果。


2、动画任务块YTAnimation,每次创建任务后直接加到队列中,每个任务块自己有一个属性就是刚才的礼物展示view,在start时让该view做动画。


3、单例类YTAnimationManager,用于管理任务YTAnimation。具体包含:创建任务,将任务和对应信息加入缓存,将任务加入队列。


4、ViewController中在需要加动画的地方取得YTAnimationManager实例,开启动画即可。


四、运行效果(这是视频直接转成的gif,效果有点垃圾,凑合看吧



在Vue3中,创建一个直播间送礼连击效果的组件通常会涉及到状态管理、动画和事件处理。以下是一个简单的概述和一个基础的组件示例: 1. **状态管理**:你可以选择Vuex作为状态管理工具,用于存储用户的礼物计数、是否连击等状态。 ```javascript // store/index.js import { createStore } from 'vuex' export const store = createStore({ state: { giftCount: 0, is连胜: false }, mutations: { addGift(state) { state.giftCount++ }, set连胜(state) { if (state.giftCount === 5) { state.is连胜 = true; state.giftCount = 0; // 清空连击次数 } } } }) ``` 2. **组件设计**: ```html <template> <div class="gift-box"> <button @click="giveGift" :class="{ active: isGifted }">送礼物</button> <span v-if="is连胜">{{ is连胜 ? '恭喜连击5次!' : '' }}</span> <span>已送礼物: {{ giftCount }}</span> </div> </template> <script setup> import { useStore } from '@/store' const store = useStore() const isGifted = ref(false) function giveGift() { store.commit('addGift') if (store.state.is连胜) { isGifted.value = true // 开启连击动画 setTimeout(() => { isGifted.value = false // 结束动画 }, 500) // 连击持续时间 } } </script> <style scoped> .active { animation: gift-slam 0.5s ease-in-out alternate; } @keyframes gift-slam { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } } </style> ``` 在这个例子中,用户点击“送礼物”按钮,组件会增加礼物计数并检查是否达到连击条件。如果是连击,会显示动画,并在一段时间后结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值