首次提交
This commit is contained in:
126
Assets/Plugins/FairyGUI/Scripts/Utils/Html/HtmlImage.cs
Normal file
126
Assets/Plugins/FairyGUI/Scripts/Utils/Html/HtmlImage.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace FairyGUI.Utils
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class HtmlImage : IHtmlObject
|
||||
{
|
||||
public GLoader loader { get; private set; }
|
||||
|
||||
RichTextField _owner;
|
||||
HtmlElement _element;
|
||||
bool _externalTexture;
|
||||
|
||||
public HtmlImage()
|
||||
{
|
||||
loader = (GLoader)UIObjectFactory.NewObject(ObjectType.Loader);
|
||||
loader.gameObjectName = "HtmlImage";
|
||||
loader.fill = FillType.ScaleFree;
|
||||
loader.touchable = false;
|
||||
}
|
||||
|
||||
public DisplayObject displayObject
|
||||
{
|
||||
get { return loader.displayObject; }
|
||||
}
|
||||
|
||||
public HtmlElement element
|
||||
{
|
||||
get { return _element; }
|
||||
}
|
||||
|
||||
public float width
|
||||
{
|
||||
get { return loader.width; }
|
||||
}
|
||||
|
||||
public float height
|
||||
{
|
||||
get { return loader.height; }
|
||||
}
|
||||
|
||||
public void Create(RichTextField owner, HtmlElement element)
|
||||
{
|
||||
_owner = owner;
|
||||
_element = element;
|
||||
|
||||
int sourceWidth = 0;
|
||||
int sourceHeight = 0;
|
||||
NTexture texture = owner.htmlPageContext.GetImageTexture(this);
|
||||
if (texture != null)
|
||||
{
|
||||
sourceWidth = texture.width;
|
||||
sourceHeight = texture.height;
|
||||
|
||||
loader.texture = texture;
|
||||
_externalTexture = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
string src = element.GetString("src");
|
||||
if (src != null)
|
||||
{
|
||||
PackageItem pi = UIPackage.GetItemByURL(src);
|
||||
if (pi != null)
|
||||
{
|
||||
sourceWidth = pi.width;
|
||||
sourceHeight = pi.height;
|
||||
}
|
||||
}
|
||||
|
||||
loader.url = src;
|
||||
_externalTexture = false;
|
||||
}
|
||||
|
||||
int width = element.GetInt("width", sourceWidth);
|
||||
int height = element.GetInt("height", sourceHeight);
|
||||
|
||||
if (width == 0)
|
||||
width = 5;
|
||||
if (height == 0)
|
||||
height = 10;
|
||||
loader.SetSize(width, height);
|
||||
}
|
||||
|
||||
public void SetPosition(float x, float y)
|
||||
{
|
||||
loader.SetXY(x, y);
|
||||
}
|
||||
|
||||
public void Add()
|
||||
{
|
||||
_owner.AddChild(loader.displayObject);
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
if (loader.displayObject.parent != null)
|
||||
_owner.RemoveChild(loader.displayObject);
|
||||
}
|
||||
|
||||
public void Release()
|
||||
{
|
||||
loader.RemoveEventListeners();
|
||||
if (_externalTexture)
|
||||
{
|
||||
_owner.htmlPageContext.FreeImageTexture(this, loader.texture);
|
||||
_externalTexture = false;
|
||||
}
|
||||
|
||||
loader.url = null;
|
||||
_owner = null;
|
||||
_element = null;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_externalTexture)
|
||||
_owner.htmlPageContext.FreeImageTexture(this, loader.texture);
|
||||
loader.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user