# API参考 本章节提供了PE引擎所有公共API的详细参考文档。 ## 全局API ### PE PE是引擎的主要入口点。 #### PE.create(options) 创建一个新的PE引擎实例。 ```javascript import PE from 'pe-engine' const game = PE.create({ width: 800, height: 600, background: '#f0f0f0', fps: 60 }) ``` **参数:** | 参数 | 类型 | 默认值 | 描述 | |------|------|--------|------| | options | Object | {} | 配置选项 | | options.width | number | 800 | 舞台宽度 | | options.height | number | 600 | 舞台高度 | | options.background | string | '#f0f0f0' | 背景色 | | options.fps | number | 60 | 帧率 | **返回值:** Engine实例 #### PE.navigateTo(path) 导航到指定路径的场景。 ```javascript PE.navigateTo('/about') ``` **参数:** | 参数 | 类型 | 描述 | |------|------|------| | path | string | 目标场景路径 | #### PE.version 获取PE引擎版本。 ```javascript console.log(PE.version) // '1.0.0' ``` ### 生命周期钩子 #### onLoad(callback) 场景加载时调用的钩子。 ```javascript onLoad(() => { console.log('场景加载完成') }) ``` #### onShow(callback) 场景显示时调用的钩子。 ```javascript onShow(() => { console.log('场景显示') }) ``` #### onHide(callback) 场景隐藏时调用的钩子。 ```javascript onHide(() => { console.log('场景隐藏') }) ``` #### onDestory(callback) 场景销毁时调用的钩子。 ```javascript onDestory(() => { console.log('场景销毁') }) ``` ## Engine实例API ### 元素创建 #### create(type, options) 创建元素。 ```javascript const sprite = game.create('sprite', { x: 100, y: 100 }) const box = game.create('box', { x: 200, y: 200, width: 100, height: 50 }) ``` **参数:** | 参数 | 类型 | 描述 | |------|------|------| | type | string | 元素类型 ('sprite', 'box', 'text', 'html', 'svg') | | options | Object | 元素配置选项 | **返回值:** 创建的元素实例 #### createSprite(image, x, y, width, height) 创建精灵元素。 ```javascript const sprite = game.createSprite('path/to/image.png', 100, 100, 50, 50) ``` #### createBox(x, y, width, height) 创建盒子元素。 ```javascript const box = game.createBox(100, 100, 200, 100) ``` #### createText(text, x, y) 创建文本元素。 ```javascript const text = game.createText('Hello PE!', 100, 100) ``` #### createHtml(html, x, y) 创建HTML元素。 ```javascript const htmlElement = game.createHtml('
HTML内容
', 100, 100) ``` #### createSvg(x, y, width, height, content) 创建SVG元素。 ```javascript const svgElement = game.createSvg(100, 100, 200, 200, '') ``` ### 场景管理 #### switchToPath(path) 切换到指定路径的场景。 ```javascript await game.switchToPath('/about') ``` #### preloadScenes(paths) 预加载场景。 ```javascript await game.preloadScenes(['/home', '/about', '/contact']) ``` #### getCurrentPath() 获取当前场景路径。 ```javascript const currentPath = game.getCurrentPath() ``` #### getCurrentScene() 获取当前场景对象。 ```javascript const currentScene = game.getCurrentScene() ``` #### getSceneElement(name) 获取场景中的元素。 ```javascript const element = game.getSceneElement('my-button') ``` ### 动画系统 #### tween(target, duration, easing) 创建补间动画。 ```javascript const tween = game.tween(element.element, 1000, 'easeInOutQuad') .to({ left: '500px' }) .start() ``` #### createFrameAnimation(name, frames, frameRate) 创建帧动画。 ```javascript game.createFrameAnimation('walk', [ 'img/walk1.png', 'img/walk2.png', 'img/walk3.png' ], 10) ``` #### playFrameAnimation(sprite, animationName, loop) 播放帧动画。 ```javascript game.playFrameAnimation(sprite, 'walk', true) ``` #### createSequence(name, animations) 创建动画序列。 ```javascript game.createSequence('moveAndFade', [ { target: element.element, props: { left: '500px' }, duration: 1000 }, { target: element.element, props: { opacity: 0 }, duration: 500 } ]) ``` #### playSequence(sequenceName, loop) 播放动画序列。 ```javascript game.playSequence('moveAndFade') ``` ### 资源管理 #### load(src) 加载资源。 ```javascript const image = await game.load('path/to/image.png') ``` #### loadSound(name, src, options) 加载音效。 ```javascript game.loadSound('jump', 'path/to/jump.mp3') ``` #### loadMusic(name, src, options) 加载音乐。 ```javascript game.loadMusic('bgm', 'path/to/background.mp3') ``` #### playSound(name, options) 播放音效。 ```javascript game.playSound('jump') ``` #### playMusic(name, options) 播放音乐。 ```javascript game.playMusic('bgm') ``` ### 摄像机控制 #### setCameraPosition(x, y) 设置摄像机位置。 ```javascript game.setCameraPosition(100, 100) ``` #### moveCamera(x, y) 移动摄像机。 ```javascript game.moveCamera(50, 50) ``` #### setCameraZoom(zoom) 设置摄像机缩放。 ```javascript game.setCameraZoom(1.5) ``` #### follow(target, offset) 跟随目标。 ```javascript game.follow(playerSprite, { x: 0, y: -50 }) ``` #### shakeCamera(intensity, duration) 摄像机震动效果。 ```javascript game.shakeCamera(10, 500) ``` ### 事件系统 #### eventBus 获取事件总线实例。 ```javascript // 发送事件 game.eventBus.emit('custom-event', { data: 'example' }) // 监听事件 game.eventBus.on('custom-event', (data) => { console.log('接收到事件:', data) }) ``` ### 定时器 #### setTimeout(callback, delay) 设置定时器。 ```javascript const timer = game.setTimeout(() => { console.log('定时器触发') }, 1000) ``` #### clearTimeout(timer) 清除定时器。 ```javascript game.clearTimeout(timer) ``` #### setInterval(callback, interval) 设置间隔执行。 ```javascript const intervalId = game.setInterval(() => { console.log('间隔执行') }, 1000) ``` #### clearInterval(intervalId) 清除间隔执行。 ```javascript game.clearInterval(intervalId) ``` ## 元素API 所有PE元素都具有以下通用API: ### 位置和尺寸 #### setPosition(x, y) 设置元素位置。 ```javascript element.setPosition(100, 200) ``` #### setSize(width, height) 设置元素尺寸。 ```javascript element.setSize(300, 150) ``` #### getX() 获取元素X坐标。 ```javascript const x = element.getX() ``` #### getY() 获取元素Y坐标。 ```javascript const y = element.getY() ``` #### getWidth() 获取元素宽度。 ```javascript const width = element.getWidth() ``` #### getHeight() 获取元素高度。 ```javascript const height = element.getHeight() ``` ### 样式操作 #### setStyle(property, value) 设置单个样式属性。 ```javascript element.setStyle('backgroundColor', '#3498db') ``` #### setStyles(styles) 设置多个样式属性。 ```javascript element.setStyles({ backgroundColor: '#3498db', borderRadius: '8px' }) ``` #### addClass(className) 添加CSS类。 ```javascript element.addClass('my-class') ``` #### removeClass(className) 移除CSS类。 ```javascript element.removeClass('my-class') ``` #### hasClass(className) 检查是否包含CSS类。 ```javascript if (element.hasClass('my-class')) { // 执行相应操作 } ``` ### 显示控制 #### show() 显示元素。 ```javascript element.show() ``` #### hide() 隐藏元素。 ```javascript element.hide() ``` #### toggle() 切换显示状态。 ```javascript element.toggle() ``` ### 文本元素特有API #### setText(text) 设置文本内容。 ```javascript textElement.setText('新的文本内容') ``` ### HTML元素特有API #### setHtml(html) 设置HTML内容。 ```javascript htmlElement.setHtml('
新的HTML内容
') ``` ## 插件API ### use(plugin, options) 安装插件。 ```javascript game.use(MyPlugin, { option1: 'value1' }) ``` ## 配置选项 ### 引擎配置 ```javascript const game = PE.create({ // 舞台尺寸 width: 800, height: 600, // 背景色 background: '#f0f0f0', // 帧率 fps: 60 }) ``` ### 资源加载配置 ```javascript game.loadSound('jump', 'path/to/jump.mp3', { volume: 0.5, loop: false }) game.loadMusic('bgm', 'path/to/background.mp3', { volume: 0.8, loop: true }) ``` ### 动画配置 ```javascript const tween = game.tween(element.element, 1000, 'easeInOutQuad') .to({ left: '500px' }, 1000) .delay(500) // 延迟500ms .onStart(() => console.log('动画开始')) .onUpdate(() => console.log('动画更新')) .onComplete(() => console.log('动画完成')) .start() ``` 通过以上API参考,你可以详细了解PE引擎提供的所有功能和使用方法。在实际开发中,建议结合示例代码和文档说明来更好地理解和使用这些API。