mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-19 08:56:08 +08:00
feat: 渲染元素的 cursor 属性
This commit is contained in:
parent
2e3c368354
commit
e79c530c48
@ -177,6 +177,12 @@ export interface IRenderTreeRoot {
|
|||||||
* 获取渲染至的目标画布,即显示在画面上的画布
|
* 获取渲染至的目标画布,即显示在画面上的画布
|
||||||
*/
|
*/
|
||||||
getCanvas(): HTMLCanvasElement;
|
getCanvas(): HTMLCanvasElement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当鼠标覆盖在某个元素上时执行
|
||||||
|
* @param element 鼠标覆盖的元素
|
||||||
|
*/
|
||||||
|
hoverElement(element: RenderItem): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ERenderItemEvent extends ERenderItemActionEvent {
|
export interface ERenderItemEvent extends ERenderItemActionEvent {
|
||||||
@ -260,6 +266,9 @@ export abstract class RenderItem<E extends ERenderItemEvent = ERenderItemEvent>
|
|||||||
/** 不透明度 */
|
/** 不透明度 */
|
||||||
alpha: number = 1;
|
alpha: number = 1;
|
||||||
|
|
||||||
|
/** 鼠标覆盖在此元素上时的光标样式 */
|
||||||
|
cursor: string = 'auto';
|
||||||
|
|
||||||
get x() {
|
get x() {
|
||||||
return this._transform.x;
|
return this._transform.x;
|
||||||
}
|
}
|
||||||
@ -788,6 +797,9 @@ export abstract class RenderItem<E extends ERenderItemEvent = ERenderItemEvent>
|
|||||||
): boolean {
|
): boolean {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ActionType.Move: {
|
case ActionType.Move: {
|
||||||
|
if (inElement) {
|
||||||
|
this._root?.hoverElement(this);
|
||||||
|
}
|
||||||
if (this.hovered && !inElement) {
|
if (this.hovered && !inElement) {
|
||||||
this.hovered = false;
|
this.hovered = false;
|
||||||
this.emit('leaveCapture', event);
|
this.emit('leaveCapture', event);
|
||||||
@ -1063,6 +1075,11 @@ export abstract class RenderItem<E extends ERenderItemEvent = ERenderItemEvent>
|
|||||||
this.setAnchor(nextValue[0] as number, nextValue[1] as number);
|
this.setAnchor(nextValue[0] as number, nextValue[1] as number);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
case 'cursor': {
|
||||||
|
if (!this.assertType(nextValue, 'string', key)) return;
|
||||||
|
this.cursor = nextValue;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const ev = this.parseEvent(key);
|
const ev = this.parseEvent(key);
|
||||||
if (ev) {
|
if (ev) {
|
||||||
|
@ -449,6 +449,10 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
|
|||||||
return this.target.canvas;
|
return this.target.canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hoverElement(element: RenderItem): void {
|
||||||
|
this.target.canvas.style.cursor = element.cursor;
|
||||||
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
super.destroy();
|
super.destroy();
|
||||||
MotaRenderer.list.delete(this.id);
|
MotaRenderer.list.delete(this.id);
|
||||||
|
Loading…
Reference in New Issue
Block a user