103 lines
2.5 KiB
C#
Raw Normal View History

2025-06-07 17:43:34 +08:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace FairyGUI.Utils
{
/// <summary>
///
/// </summary>
public class HtmlSelect : IHtmlObject
{
public GComboBox comboBox { get; private set; }
public const string CHANGED_EVENT = "OnHtmlSelectChanged";
public static string resource;
RichTextField _owner;
HtmlElement _element;
EventCallback0 _changeHandler;
public HtmlSelect()
{
comboBox = UIPackage.CreateObjectFromURL(resource).asComboBox;
_changeHandler = () =>
{
_owner.DispatchEvent(CHANGED_EVENT, null, this);
};
}
public DisplayObject displayObject
{
get { return comboBox.displayObject; }
}
public HtmlElement element
{
get { return _element; }
}
public float width
{
get { return comboBox != null ? comboBox.width : 0; }
}
public float height
{
get { return comboBox != null ? comboBox.height : 0; }
}
public void Create(RichTextField owner, HtmlElement element)
{
_owner = owner;
_element = element;
if (comboBox == null)
return;
comboBox.onChanged.Add(_changeHandler);
int width = element.GetInt("width", comboBox.sourceWidth);
int height = element.GetInt("height", comboBox.sourceHeight);
comboBox.SetSize(width, height);
comboBox.items = (string[])element.Get("items");
comboBox.values = (string[])element.Get("values");
comboBox.value = element.GetString("value");
}
public void SetPosition(float x, float y)
{
if (comboBox != null)
comboBox.SetXY(x, y);
}
public void Add()
{
if (comboBox != null)
_owner.AddChild(comboBox.displayObject);
}
public void Remove()
{
if (comboBox != null && comboBox.displayObject.parent != null)
_owner.RemoveChild(comboBox.displayObject);
}
public void Release()
{
if (comboBox != null)
comboBox.RemoveEventListeners();
_owner = null;
_element = null;
}
public void Dispose()
{
if (comboBox != null)
comboBox.Dispose();
}
}
}