# 创建应用实例

在PE引擎中，所有应用都从创建一个应用实例开始。这个实例是整个应用的核心，包含了引擎的所有功能。

## 创建应用实例

要创建一个PE应用实例，你需要从`pe-engine`包中导入PE对象，然后调用`PE.create()`方法：

```javascript
import PE from 'pe-engine'

// 创建应用实例
const game = PE.create()
```

`PE.create()`方法会返回一个引擎实例，该实例包含了所有PE引擎的功能，包括元素创建、场景管理、动画系统等。

## 应用配置

在创建应用实例时，你可以传入配置选项来自定义应用的行为：

```javascript
import PE from 'pe-engine'

// 带配置的应用实例
const game = PE.create({
  width: 1024,     // 舞台宽度，默认800
  height: 768,     // 舞台高度，默认600
  background: '#ffffff', // 舞台背景色，默认'#f0f0f0'
  fps: 60          // 帧率，默认60
})
```

### 配置选项说明

| 选项 | 类型 | 默认值 | 描述 |
|------|------|--------|------|
| width | number | 800 | 应用舞台的宽度（像素） |
| height | number | 600 | 应用舞台的高度（像素） |
| background | string | '#f0f0f0' | 舞台背景色 |
| fps | number | 60 | 应用的帧率 |

## 应用实例的核心功能

创建的应用实例提供了丰富的API来管理你的应用：

### 元素创建

使用`create`方法可以创建各种元素：

```javascript
// 创建精灵
const sprite = game.create('sprite')
sprite.setPosition(100, 100)
sprite.setSize(100, 100)

// 创建盒子
const box = game.create('box', { 
  x: 200, 
  y: 200, 
  width: 150, 
  height: 100 
})

// 创建文本
const text = game.create('text', { 
  text: 'Hello PE!', 
  x: 300, 
  y: 300 
})
```

### 场景管理

应用实例提供了场景管理功能：

```javascript
// 切换到指定路径的场景
PE.navigateTo('/about')

// 预加载场景
game.preloadScenes(['/home', '/about', '/contact'])
```

### 动画系统

应用实例集成了动画系统：

```javascript
// 创建补间动画
game.tween(sprite.element)
  .to({ left: '500px', top: '500px' }, 1000)
  .easing('easeInOutQuad')
  .start()

// 创建帧动画
game.createFrameAnimation('walk', [
  'img/walk1.png',
  'img/walk2.png',
  'img/walk3.png'
], 10)

game.playFrameAnimation(sprite, 'walk', true)
```

### 资源管理

应用实例提供了资源加载和管理功能：

```javascript
// 加载图像资源
const image = await game.load('path/to/image.png')

// 加载音频资源
game.loadSound('jump', 'path/to/jump.mp3')
game.loadMusic('bgm', 'path/to/background.mp3')
```

### 摄像机控制

应用实例支持摄像机系统：

```javascript
// 设置摄像机位置
game.setCameraPosition(100, 100)

// 跟随目标
game.follow(playerSprite)

// 摄像机震动效果
game.shakeCamera(10, 500)
```

## 完整示例

以下是一个完整的应用实例创建和使用示例：

```javascript
import PE from 'pe-engine'

// 创建应用实例
const game = PE.create({
  width: 800,
  height: 600,
  background: '#2c3e50'
})

// 创建一个精灵
const player = game.create('sprite')
player.setPosition(100, 100)
player.setSize(50, 50)

// 为精灵添加样式
player.element.style.backgroundColor = '#3498db'
player.element.style.borderRadius = '50%'

// 添加点击事件
player.element.addEventListener('click', () => {
  // 播放动画
  game.tween(player.element)
    .to({ 
      left: Math.random() * 700 + 'px', 
      top: Math.random() * 500 + 'px' 
    }, 500)
    .easing('easeOutQuad')
    .start()
})

// 添加键盘控制
document.addEventListener('keydown', (e) => {
  const speed = 10
  const pos = {
    left: parseInt(player.element.style.left) || 0,
    top: parseInt(player.element.style.top) || 0
  }
  
  switch(e.key) {
    case 'ArrowUp':
      player.setPosition(pos.left, pos.top - speed)
      break
    case 'ArrowDown':
      player.setPosition(pos.left, pos.top + speed)
      break
    case 'ArrowLeft':
      player.setPosition(pos.left - speed, pos.top)
      break
    case 'ArrowRight':
      player.setPosition(pos.left + speed, pos.top)
      break
  }
})
```

通过以上内容，你已经了解了如何创建和配置PE应用实例，以及如何使用其核心功能。在下一章节中，我们将深入探讨PE的元素系统。