From afc6026841c7b50e2dec882bccc5daf06bbac956 Mon Sep 17 00:00:00 2001 From: liteng <930372551@qq.com> Date: Wed, 27 Jun 2018 21:53:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E9=A2=98=E6=94=B9=E5=8F=98=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/Viewport.js | 19 ----------- src/event/EventDispatcher.js | 2 ++ src/event/viewport/ThemeChangedEvent.js | 45 +++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 src/event/viewport/ThemeChangedEvent.js diff --git a/src/editor/Viewport.js b/src/editor/Viewport.js index bcc7a37a..a88afd2d 100644 --- a/src/editor/Viewport.js +++ b/src/editor/Viewport.js @@ -108,25 +108,6 @@ function Viewport(app) { vrEffect.isPresenting ? vrEffect.exitPresent() : vrEffect.requestPresent(); }); - this.app.on('themeChanged.Viewport', function (value) { - switch (value) { - case 'assets/css/light.css': - sceneHelpers.remove(grid); - grid = new THREE.GridHelper(60, 60, 0x444444, 0x888888); - sceneHelpers.add(grid); - editor.grid = grid; - break; - case 'assets/css/dark.css': - sceneHelpers.remove(grid); - grid = new THREE.GridHelper(60, 60, 0xbbbbbb, 0x888888); - sceneHelpers.add(grid); - editor.grid = grid; - break; - } - - _this.app.call('render'); - }); - this.app.call('animate'); }; diff --git a/src/event/EventDispatcher.js b/src/event/EventDispatcher.js index aed5d7b3..0a6bcf57 100644 --- a/src/event/EventDispatcher.js +++ b/src/event/EventDispatcher.js @@ -93,6 +93,7 @@ import GeometryEvent from './viewport/GeometryEvent'; import PickEvent from './viewport/PickEvent'; import RendererChangedEvent from './viewport/RendererChangedEvent'; import WindowResizeEvent from './viewport/WindowResizeEvent'; +import ThemeChangedEvent from './viewport/ThemeChangedEvent'; import TransformModeChangedEvent from './statusBar/TransformModeChangedEvent'; import GridChangeEvent from './statusBar/GridChangeEvent'; @@ -202,6 +203,7 @@ function EventDispatcher(app) { new PickEvent(this.app), new RendererChangedEvent(this.app), new WindowResizeEvent(this.app), + new ThemeChangedEvent(this.app), // statusBar中的事件 new TransformModeChangedEvent(this.app), diff --git a/src/event/viewport/ThemeChangedEvent.js b/src/event/viewport/ThemeChangedEvent.js new file mode 100644 index 00000000..be568b94 --- /dev/null +++ b/src/event/viewport/ThemeChangedEvent.js @@ -0,0 +1,45 @@ +import BaseEvent from '../BaseEvent'; + +/** + * 主题改变事件 + * @param {*} app + */ +function ThemeChangedEvent(app) { + BaseEvent.call(this, app); +} + +ThemeChangedEvent.prototype = Object.create(BaseEvent.prototype); +ThemeChangedEvent.prototype.constructor = ThemeChangedEvent; + +ThemeChangedEvent.prototype.start = function () { + this.app.on('themeChanged.' + this.id, this.onThemeChanged.bind(this)); +}; + +ThemeChangedEvent.prototype.stop = function () { + this.app.on('themeChanged.' + this.id, null); +}; + +ThemeChangedEvent.prototype.onThemeChanged = function (value) { + var editor = this.app.editor; + var sceneHelpers = editor.sceneHelpers; + var grid = editor.grid; + + switch (value) { + case 'assets/css/light.css': + sceneHelpers.remove(grid); + grid = new THREE.GridHelper(60, 60, 0x444444, 0x888888); + sceneHelpers.add(grid); + editor.grid = grid; + break; + case 'assets/css/dark.css': + sceneHelpers.remove(grid); + grid = new THREE.GridHelper(60, 60, 0xbbbbbb, 0x888888); + sceneHelpers.add(grid); + editor.grid = grid; + break; + } + + this.app.call('render'); +}; + +export default ThemeChangedEvent; \ No newline at end of file