# 类 Focus

渲染进程类,在游戏进程中不可直接使用,继承自 [`EventEmitter`](./event-emitter.md)

-   实例属性
    -   [`stack`](#stack)
    -   [`focused`](#focused)
    -   [`readonly equal`](#readonly-equal)
-   实例方法
    -   构造器[`constructor`](#constructor)
    -   [`focus`](#focus)
    -   [`unfocus`](#unfocus)
    -   [`add`](#add)
    -   [`pop`](#pop)
    -   [`splice`](#splice)
    -   [`spliceIndex`](#spliceindex)
-   实例事件
    -   [`focus`](#focus-事件)
    -   [`unfocus`](#unfocus-事件)
    -   [`add`](#add-事件)
    -   [`pop`](#pop-事件)
    -   [`splice`](#splice-事件)

## stack

```ts
declare var stack: any[]
```

-   成员说明

    该成员描述了当前列表的显示栈

## focused

```ts
declare var focused: any | null
```

-   成员说明

    该成员描述了当聚焦于的元素

## readonly equal

```ts
declare const equal: boolean
```

-   成员说明

    该成员描述了不同元素间的关系,当该项为 `true` 时,表示成员间为平等关系,删除任意一项不会影响其他项,而为 `false` 时,删除一项后会将其之后的所有项一并删除

## consturctor()

```ts
interface Focus {
    new(react: boolean = false, equal: boolean = false): Focus
}
```

-   参数说明
    -   `react`: 显示栈是否设置为浅层响应式(`shallowReactive`)变量
    -   `equal`: 成员关系是否为平等关系

## focus()

```ts
declare function focus(target: any, add: boolean = false): void
```

-   参数说明

    -   `target`: 聚焦目标,是聚焦目标的引用,而非索引
    -   `add`: 当聚焦目标不存在时,是否自动追加到显示栈末尾

-   方法说明

    该方法用于聚焦于一个显示元素

## unfocus()

```ts
declare function unfocus(): void
```

-   方法说明

    该方法用于取消聚焦显示元素

## add()

```ts
declare function add(item: any): void
```

-   方法说明

    该方法用于在显示栈末尾追加一个元素

## pop()

```ts
declare function pop(): any | null
```

-   方法说明

    弹出显示栈末尾的元素

## splice()

```ts
declare function splice(item: any): void
```

-   方法说明

    方法用于裁切显示栈,对于平等模式,只会删除对应元素,而对于非平等模式,其之后的所有元素都会被删除

## spliceIndex()

```ts
declare function spliceIndex(index: number): void
```

-   方法说明

    根据索引裁切显示栈,与 [`splice`](#splice) 方法类似

## focus 事件

```ts
interface FocusEvent {
    focus: (before: any | null, after: any) => void
}
```

-   事件说明

    当聚焦于一个元素时,该事件会被触发,传入之前聚焦的元素以及当前聚焦的元素作为参数

## unfocus 事件

```ts
interface FocusEvent {
    unfocus: (before: any | null) => void
}
```

-   事件说明

    当取消聚焦元素时,该事件被触发,传入之前聚焦于的元素作为参数

## add 事件

```ts
interface FocusEvent {
    add: (item: any) => void
}
```

-   事件说明

    当向显示栈内添加内容时,该事件被触发,传入添加的元素作为参数

## pop 事件

```ts
interface FocusEvent {
    pop: (item: any | null) => void
}
```

-   事件说明

    当弹出显示栈的末尾元素时,该事件被触发,传入弹出的元素作为参数

## splice 事件

```ts
interface FocusEvent {
    splice: (spliced: any[]) => void
}
```

-   事件说明

    当显示栈被裁切时,该事件被触发,传入所有被裁切的元素组成的数组作为参数