12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import { _decorator, AudioClip, AudioSource, Button, Component, Label, Node, Sprite, SpriteFrame } from 'cc';
- import { main } from '../main';
- import { ClientEvent } from '../clientEvent';
- import { config } from '../config';
- import { bag_item_data, widget_item_data } from '../../data/data';
- import { base_res } from './base_res';
- const { ccclass, property } = _decorator;
- @ccclass('sound_item')
- export class sound_item extends base_res {
- @property(Node) img_icon:Node = null;
- @property(Node) lab_name:Node = null;
- private m_audio_clip:AudioClip = null;
- private m_name:string ="";
- @property(Node) btn_play:Node = null;
- @property(SpriteFrame) sf_pause:SpriteFrame = null;
- @property(SpriteFrame) sf_play:SpriteFrame = null;
- public initView(type:number,data:bag_item_data,name:string,ac:AudioClip){
- this.setData(data)
- this.setType(type)
- this.m_audio_clip = ac;
- this.m_name = name;
- this.lab_name.getComponent(Label).string = name;
- this.init()
- }
- public init(isCanMove:boolean = true){
- if(isCanMove){
- this.btn_play.on(Node.EventType.TOUCH_END,()=>{
- ClientEvent.dispatchEvent(config.Event.PLAY_SOUND,this.m_name)
- })
- }
- ClientEvent.on(config.Event.PLAY_SOUND,this.onPlaySound,this)
- if(isCanMove){
- this.node.on(Node.EventType.MOUSE_DOWN,this.onDragRes.bind(this),this)
- }
- }
- public changeAudio(data:bag_item_data,ac:AudioClip){
- this.m_name = data.name;
- this.setData(data)
- this.setType(config.select_res_btn_type.SOUND_LIST)
- this.m_audio_clip = ac;
- this.lab_name.getComponent(Label).string = this.m_name;
- this.btn_play.off(Node.EventType.TOUCH_END)
- this.btn_play.on(Node.EventType.TOUCH_END,()=>{
- this.onPlaySound(this.m_name)
- })
- }
-
- onDragRes(){
- ClientEvent.dispatchEvent(config.Event.DragRes,this.node)
- }
- protected onDestroy(): void {
- ClientEvent.off(config.Event.PLAY_SOUND,this.onPlaySound,this)
- }
- onPlaySound(name:string){
- if(this.m_name===name){
- if(main.cur_play_audio===name&&main.getAudioSource().playing){
- main.getAudioSource().stop()
- this.btn_play.getComponent(Sprite).spriteFrame = this.sf_pause
- main.cur_play_audio = "";
- }else{
- main.g_audioSource.node.off(AudioSource.EventType.STARTED);
- main.g_audioSource.node.off(AudioSource.EventType.ENDED);
- main.g_audioSource.node.on(AudioSource.EventType.STARTED, this.onAudioStarted, this);
- // Register the ended event callback
- main.g_audioSource.node.on(AudioSource.EventType.ENDED, this.onAudioEnded, this);
- this.btn_play.getComponent(Sprite).spriteFrame = this.sf_play
-
- if (this.m_audio_clip instanceof AudioClip) {
- main.getAudioSource().clip = this.m_audio_clip;
- main.getAudioSource().play();
- main.getAudioSource().volume = 1;
- }
- main.cur_play_audio = name;
- }
-
- }else{
- if(this.btn_play) {
- this.btn_play.getComponent(Sprite).spriteFrame = this.sf_pause
- }
- }
- }
- onAudioStarted(){
- }
- onAudioEnded(){
- if(this.btn_play) {
- this.btn_play.getComponent(Sprite).spriteFrame = this.sf_pause
- }
- }
- }
|