getComponent()与getSource()

本文介绍如何使用Java Swing的Component[]items方法获取父控件中的所有子控件,并将其存储为Component类的数组。此外,还介绍了如何通过getSource()方法获取触发事件的对象,并将之强制转换为AbstractButton类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Component[] items = 父控件.getComponents(); 获取父控件里的控件,返回Component类的数组。如panel中的许多button
e.getSource() 获取发生Event的对象。
//强制转换为抽象按钮:AbstractButton是JButton、JCheckBox、JRadioButton的父类
//由于不知道谁会被选中,所以使用它们的父类
AbstractButton btn=(AbstractButton)e.getSource();//发生Event的源头

转载于:https://www.cnblogs.com/xixixing/p/9502482.html

using UnityEngine; using System.Collections; using System.Collections.Generic; using XLua; namespace LuaFramework { [LuaCallCSharp] public class SoundManager : Manager { public AudioSource bgAudio; public AudioSource audio; public AudioSource audioTwo; public AudioSource audioThree; //public AudioSource[] gens = new AudioSource[6]; public AudioSource gens; public AudioSource nets; private Hashtable sounds = new Hashtable(); public static SoundManager _instance; void Awake() { _instance = this; } public static SoundManager Instance { get { return _instance; } } void Start() { bgAudio = GetComponent<AudioSource>(); audio = transform.Find("Audio").GetComponent<AudioSource>(); audioTwo = transform.Find("AudioTwo").GetComponent<AudioSource>(); audioThree = transform.Find("AudioThree").GetComponent<AudioSource>(); gens = transform.Find("Gen").GetComponent<AudioSource>(); nets = transform.Find("Net").GetComponent<AudioSource>(); /*for (int i = 0; i < 6; i++) { gens[i] = transform.Find("Gen"+i).GetComponent<AudioSource>(); }*/ } /// <summary> /// Ìí¼ÓÒ»¸öÉùÒô /// </summary> void Add(string key, AudioClip value) { if (sounds[key] != null || value == null) return; //Debug.Log("..add..AudioClip.."+key); sounds.Add(key, value); } public void ClearGameAudio(string key) { if (sounds[key] != null) { sounds[key] = null; } } /// <summary> /// »ñȡһ¸öÉùÒô /// </summary> AudioClip Get(string key) { if (sounds[key] == null) return null; return sounds[key] as AudioClip; } public float GetBgAudioVolume() { return bgAudio.volume; } public void SetBgAudioVolume(float value) { string key = "BgSound"; bgAudio.volume = value; PlayerPrefs.SetFloat(key, value); } public float GetGameAudioVolume(float value) { return audio.volume; } public void SetGameAudioVolume(float value) { string key = "GameAudio"; audio.volume = value; PlayerPrefs.SetFloat(key,value); } public void ChangBgVolumeOnGameScene(float value) { bgAudio.volume = value; } public void ChangGameVolueOnGameScene(float value) { audio.volume = value; audioTwo.volume = value; audioThree.volume = value; gens.volume = value; nets.volume = value; /*for (int i = 0; i < 6; i++) { gens[i].volume = value; }*/ } public void EnterMainScene() { bgAudio.volume = 1.0f; audio.volume = 1.0f; } IEnumerator playBgAudioClip(string name) { AudioClip Aclip; if (AppConst.UpdateMode) { AssetBundle built = null; #if UNITY_ANDROID || UNITY_IPHONE string path_2 = "file:///" + AppConst.FrameworkRoot + "/datingui_" + AppConst.UIVersion + "/" + name + ".u3d"; WWW www = new WWW(@path_2); yield return www; if (www.error == null) { yield return built = www.assetBundle; } else { Debug.Log("www null-------- " + path_2); } #else byte[] data = null;// = OpenFile.GetFileData(path_); if (File.Exists(path_)) { FileStream file_ = new FileStream(path_, FileMode.Open, FileAccess.Read); yield return data = new byte[file_.Length]; file_.Read(data, 0, (int)file_.Length); file_.Close(); } if (data != null) { yield return built = AssetBundle.LoadFromMemory(data); } #endif if (built != null) { Aclip = built.LoadAsset(name) as AudioClip; built.Unload(false); Add(name, Aclip); bgAudio.clip = Aclip; bgAudio.Play(); } www.Dispose(); }else { string path = "datingui_" + AppConst.UIVersion + "/" + name; yield return Aclip = (AudioClip)Resources.Load(path, typeof(AudioClip)); bgAudio.clip = Aclip; bgAudio.Play(); } } /// <summary> /// ÊÇ·ñ²¥·Å±³¾°ÒôÀÖ£¬Ä¬ÈÏÊÇ1£º²¥·Å /// </summary> /// <returns></returns> public bool CanPlayBackSound() { string key = "BackSound"; int i = PlayerPrefs.GetInt(key, 1); return i == 1; } /// <summary> /// ²¥·Å±³¾°ÒôÀÖ /// </summary> /// <param name="canPlay"></param> public void PlayBacksound(string name, bool canPlay) { if (bgAudio.clip != null) { if (name.IndexOf(bgAudio.clip.name) > -1) { if (!canPlay) { bgAudio.Stop(); bgAudio.clip = null; //Util.ClearMemory(); return; } } } if (canPlay) { bgAudio.loop = true; //audio.clip = LoadAudioClip(name); //audio.Play(); AudioClip Aclip; Aclip = Get(name); if (Aclip != null) { bgAudio.clip = Aclip; bgAudio.Play(); return; } else { StartCoroutine(playBgAudioClip(name)); } } else { bgAudio.Stop(); bgAudio.clip = null; //Util.ClearMemory(); } } public void PlayGameAudio(string name, bool canPlay) { if (audio.clip != null) { if (name.IndexOf(audio.clip.name) > -1) { if (!canPlay) { audio.Stop(); audio.clip = null; //Util.ClearMemory(); return; } } } if (canPlay) { audio.loop = false; //audio.clip = LoadAudioClip(name); //audio.Play(); AudioClip Aclip; Aclip = Get(name); if (Aclip != null) { audio.clip = Aclip; audio.Play(); return; } else { Debug.Log("...GameAudio..is ..null"); } } else { audio.Stop(); audio.clip = null; //Util.ClearMemory(); } } public void LoopPlayGameAudio(string name) { if (audio.clip != null) { if (name.IndexOf(audio.clip.name) > -1) { audio.loop = true; return; } } AudioClip Aclip; Aclip = Get(name); if (Aclip != null) { //audio.loop = true; audio.clip = Aclip; audio.loop = true; audio.Play(); return; } else { Debug.Log("...GameAudio..is ..null"); } } /// <summary> /// ÊÇ·ñ²¥·ÅÒôЧ,ĬÈÏÊÇ1£º²¥·Å /// </summary> /// <returns></returns> public bool CanPlaySoundEffect() { string key = "SoundEffect"; int i = PlayerPrefs.GetInt(key, 1); return i == 1; } /// <summary> /// ²¥·ÅÒôƵ¼ô¼­ /// </summary> /// <param name="clip"></param> /// <param name="position"></param> public void Play(AudioClip clip, Vector3 position) { if (!CanPlaySoundEffect()) return; AudioSource.PlayClipAtPoint(clip, position); } /// <summary> /// Í£Ö¹ÒôÀÖ /// </summary> public void StopBgAudio() { bgAudio.Stop(); //string key = "BackSound"; //PlayerPrefs.SetInt(key,0); Debug.Log("....BackSoundStopAudio"); } /// <summary> /// ²¥·ÅÒôÀÖ /// </summary> public void PlayBgAudio() { bgAudio.Play(); //string key = "BackSound"; //PlayerPrefs.SetInt(key,1); Debug.Log("....BackSoundPlayAudio"); } public void AudioTwoPlayOneShot(string name) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { //audioTwo.clip = Aclip; audioTwo.PlayOneShot(Aclip); } } public void AudioThreePlayOneShot(string name) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { //audioThree.clip = Aclip; audioThree.PlayOneShot(Aclip); } } public void AudioPlayOneShot(string name) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { //audio.clip = Aclip; audio.PlayOneShot(Aclip); } } public void AudioPlayGen(string name) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { gens.clip = Aclip; gens.Play(); } /*if (genSeat < 6) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { gens[genSeat].PlayOneShot(Aclip); } }*/ } public void AudioPlayNet(string name) { AudioClip Aclip; Aclip = Get(name); if (Aclip) { nets.clip = Aclip; nets.Play(); } } public void ExitGame() { nets.Stop(); gens.Stop(); bgAudio.Stop(); audio.Stop(); audioTwo.Stop(); audioThree.Stop(); } float jindus; public AudioClip LoadAudioClipByPath(string name) { //string path; AudioClip Aclip = Get(name); if (Aclip != null) { return Aclip; } //AudioClip Aclip; if (AppConst.UpdateMode) { AssetBundle built = null; WWW www = null; #if UNITY_ANDROID //string path_2 = "file:///" + AppConst.FrameworkRoot + "/datingui_" + AppConst.UIVersion + "/" + path + name + ".u3d"; string path_2 = "file:///" + AppConst.FrameworkRoot + "/FishAudio_" + AppConst.UIVersion + "/" + name + ".u3d"; www = new WWW(@path_2); //yield return www; if (www.error == null) { built = www.assetBundle; } else { Debug.Log("www null-------- " + path_2); } #else string _path = AppConst.FrameworkRoot + "/FishAudio_"+ AppConst.UIVersion + "/" + name + ".u3d"; byte[] data = null;// = OpenFile.GetFileData(path_); if (System.IO.File.Exists(_path)) { System.IO.FileStream file_ = new System.IO.FileStream(_path, System.IO.FileMode.Open, System.IO.FileAccess.Read); data = new byte[file_.Length]; int redline = 0; int allnum = 0; while (true) { byte[] reddata = new byte[1024000]; redline = file_.Read(reddata, 0, (int)reddata.Length); if (redline <= 0) { jindus = 1.0f; break; } else { //Debug.LogError(redline); System.Array.Copy(reddata, 0, data, allnum, redline); allnum += redline; jindus = (float)allnum / (float)data.Length; } } file_.Close(); } if (data != null) { built = AssetBundle.LoadFromMemory(data); } #endif if (built != null) { Aclip = built.LoadAsset(name) as AudioClip; built.Unload(false); Add(name, Aclip); if (Aclip == null) { Debug.Log("Aclip null-------- "); } if (www != null) www.Dispose(); return Aclip; }else { if (www != null) www.Dispose(); return null; } }else { //string path_3 = "datingui_" + AppConst.UIVersion + "/" + path + name; string path_3 = "FishAudio_" + AppConst.UIVersion + "/" + name; Aclip = (AudioClip)Resources.Load(path_3, typeof(AudioClip)); Add(name, Aclip); if (Aclip == null) { Debug.Log("Aclip null-------- "); } return Aclip; } } public void ClearGameAudioClip(string key) { if (sounds[key] != null) { sounds.Remove(key); } } } }这个代码是Unity5.3.3f1版本的,现在升级到Unity2021.3.45f1版本后怎么兼容?并且把修改后的完整代码给我
最新发布
07-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值