123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { _decorator, AudioClip, AudioSource, Component, Label, Node, Vec3 } from 'cc';
- import { att_text_sound_data, event_item } from '../../../data/data';
- import { gameManager } from '../gameManager';
- import { ClientEvent } from '../../clientEvent';
- import { config } from '../../config';
- const { ccclass, property } = _decorator;
- @ccclass('sound_text_content')
- export class sound_text_content extends Component {
- @property(Node) lab_text:Node = null;
- @property(Node) item_node:Node = null;
- private m_audio_clip:AudioClip = null;
- private mData:att_text_sound_data = null;
- private mWidgetId:number = 0;
- protected start(): void {
- this.node.addComponent(AudioSource)
- }
- public isCanClose(){
- if(this.mData.is_open_click_close==undefined){
- this.mData.is_open_click_close = true;
- return true;
- }
- return this.mData.is_open_click_close;
- }
- public show(widget_id,data:att_text_sound_data,ac:AudioClip){
- this.node.on(Node.EventType.TOUCH_START,()=>{
- if(this.isCanClose()){
- this.node.off(Node.EventType.TOUCH_START)
- this.onAudioEnded()
- }
- })
- this.mWidgetId = widget_id;
- this.mData = data;
- this.m_audio_clip = ac;
- this.lab_text.getComponent(Label).string = this.mData.text;
- this.item_node.position = new Vec3(this.item_node.position.x,this.mData.pos_y)
- if(gameManager.Singleton.getLevelData()){
- if(gameManager.getUserData().isOpenPeiYin){
- this.onPlaySound()
- }
- }else{
- this.onPlaySound()
- }
-
- }
- getAudioSource(){
- if(this.node.getComponent(AudioSource)==null){
- this.node.addComponent(AudioSource)
- }
- return this.node.getComponent(AudioSource)
- }
- onPlaySound(){
- this.getAudioSource().stop()
- this.node.off(AudioSource.EventType.STARTED);
- this.node.off(AudioSource.EventType.ENDED);
- this.node.on(AudioSource.EventType.STARTED, this.onAudioStarted, this);
- // Register the ended event callback
- this.node.on(AudioSource.EventType.ENDED, this.onAudioEnded, this);
- if (this.m_audio_clip instanceof AudioClip) {
- this.getAudioSource().clip = this.m_audio_clip;
- this.getAudioSource().play();
- this.getAudioSource().volume = 1;
- }
- }
-
- onAudioStarted(){
- }
- onAudioEnded(){
- this.node.off(AudioSource.EventType.STARTED);
- this.node.off(AudioSource.EventType.ENDED);
- this.node.active = false;
- ClientEvent.dispatchEvent(config.EventRun.WIDGET_FINISH,this.mWidgetId)
- }
- }
|