|  | @@ -0,0 +1,96 @@
 | 
	
		
			
				|  |  | +import { Component, OnInit, OnDestroy } from '@angular/core';
 | 
	
		
			
				|  |  | +import { IonHeader, IonButton, IonContent, IonIcon, IonItem, IonLabel, IonList, 
 | 
	
		
			
				|  |  | +  IonListHeader, IonCardHeader, IonCardTitle, IonAvatar, IonCardContent, IonTitle, IonCard, IonToolbar, IonInput, IonSearchbar } from '@ionic/angular/standalone';
 | 
	
		
			
				|  |  | +import { Router } from '@angular/router';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@Component({
 | 
	
		
			
				|  |  | +  selector: 'app-drift-bottle',
 | 
	
		
			
				|  |  | +  template: `
 | 
	
		
			
				|  |  | +    <ion-header>
 | 
	
		
			
				|  |  | +      <ion-toolbar>
 | 
	
		
			
				|  |  | +        <ion-title>Drift Bottle</ion-title>
 | 
	
		
			
				|  |  | +      </ion-toolbar>
 | 
	
		
			
				|  |  | +    </ion-header>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <ion-content [fullscreen]="true">
 | 
	
		
			
				|  |  | +      <div class="top-image" (click)="addRipple($event)">
 | 
	
		
			
				|  |  | +        <img src="/assets/img/漂流瓶.jpg" alt="漂流瓶">
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +      <!-- 其他内容可以放在这里 -->
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +      <!-- 左边的按钮 -->
 | 
	
		
			
				|  |  | +      <div class="button-container left-button">
 | 
	
		
			
				|  |  | +        <img src="/assets/img/扔一个.png" alt="扔漂流瓶" class="circular-button">
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <!-- 右边的按钮 -->
 | 
	
		
			
				|  |  | +      <div class="button-container right-button">
 | 
	
		
			
				|  |  | +        <img src="/assets/img/捞一个.png" alt="捞漂流瓶" class="circular-button">
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <!-- 背景音乐 -->
 | 
	
		
			
				|  |  | +      <audio #backgroundAudio id="backgroundAudio" autoplay loop>
 | 
	
		
			
				|  |  | +        <source src="/assets/audio/海浪.mp3" type="audio/mpeg">
 | 
	
		
			
				|  |  | +        Your browser does not support the audio element.
 | 
	
		
			
				|  |  | +      </audio>
 | 
	
		
			
				|  |  | +    </ion-content>
 | 
	
		
			
				|  |  | +  `,
 | 
	
		
			
				|  |  | +  styleUrls: ['./drift-bottle.component.scss'],
 | 
	
		
			
				|  |  | +  standalone: true,
 | 
	
		
			
				|  |  | +  imports: [IonHeader, IonToolbar, IonTitle, IonContent,
 | 
	
		
			
				|  |  | +            IonList, IonListHeader, IonItem, IonCardTitle,
 | 
	
		
			
				|  |  | +            IonLabel, IonIcon, IonButton, IonCardContent, IonAvatar,
 | 
	
		
			
				|  |  | +            IonInput, IonSearchbar, IonCard, IonCardHeader
 | 
	
		
			
				|  |  | +          ]
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +export class DriftBottleComponent implements OnInit, OnDestroy {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  constructor(private router: Router) { }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ngOnInit(): void {
 | 
	
		
			
				|  |  | +    const audioElement = document.getElementById('backgroundAudio') as HTMLAudioElement;
 | 
	
		
			
				|  |  | +    if (audioElement) {
 | 
	
		
			
				|  |  | +      audioElement.play();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ngOnDestroy(): void {
 | 
	
		
			
				|  |  | +    const audioElement = document.getElementById('backgroundAudio') as HTMLAudioElement;
 | 
	
		
			
				|  |  | +    if (audioElement) {
 | 
	
		
			
				|  |  | +      audioElement.pause();
 | 
	
		
			
				|  |  | +      audioElement.currentTime = 0; // Reset the audio to the beginning
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  goTab1(): void {
 | 
	
		
			
				|  |  | +    this.router.navigate(['tabs/tab1']);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  addRipple(event: MouseEvent): void {
 | 
	
		
			
				|  |  | +    const container = event.currentTarget as HTMLElement;
 | 
	
		
			
				|  |  | +    const rect = container.getBoundingClientRect();
 | 
	
		
			
				|  |  | +    const x = event.clientX - rect.left;
 | 
	
		
			
				|  |  | +    const y = event.clientY - rect.top;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 创建涟漪元素
 | 
	
		
			
				|  |  | +    const ripple = document.createElement('span');
 | 
	
		
			
				|  |  | +    ripple.classList.add('ripple');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 设置涟漪的位置和大小
 | 
	
		
			
				|  |  | +    ripple.style.left = `${x}px`;
 | 
	
		
			
				|  |  | +    ripple.style.top = `${y}px`;
 | 
	
		
			
				|  |  | +    ripple.style.width = ripple.style.height = '100px'; // 可根据需要调整
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 添加到DOM并触发动画
 | 
	
		
			
				|  |  | +    container.appendChild(ripple);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 动画结束后移除涟漪元素
 | 
	
		
			
				|  |  | +    setTimeout(() => {
 | 
	
		
			
				|  |  | +      ripple.remove();
 | 
	
		
			
				|  |  | +    }, 600); // 应与CSS动画时间相匹配
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 |