uniapp红包雨活动
template
<template>
<scroll-view scroll-y="true">
<view class="red-envelope-rain">
<view v-for="(redEnvelope, index) in redEnvelopes" :key="index" class="red-envelope"
:style="{ top: redEnvelope.top + 'px', left: redEnvelope.left + 'px' }"
@click="handleRedEnvelopeClick(index)"></view>
</view>
</scroll-view>
</template>
script
<script>
export default {
data() {
return {
redEnvelopes: [],
redEnvelopeInterval: null,
}
},
onLoad(options) {
// 每秒创建一个红包
setInterval(this.initializeRedEnvelopes, 500);
// 更新红包位置,约 60 帧
setInterval(this.moveRedEnvelopes, 1000 / 60);
},
beforeDestroy() {
this.stopRedEnvelopeRain();
},
methods: {
initializeRedEnvelopes() {
const numRedEnvelopes = 20; // 红包数量