local SceneEditor = class("SceneEditor" , require("NodeEditor")); function SceneEditor:ctor() SceneEditor.super.ctor(self); end function SceneEditor:activate() SceneEditor.super.activate(self); app.setting.OriginAnchor = cc.p(0,0); app:refreshSetting(); end function SceneEditor:unactivate() SceneEditor.super.unactivate(self); if self.MapEditor ~= nil then self.MapEditor:close(); end end function SceneEditor:play() if self.node then self.node:playCurveAnimation(); local cameraSphericlNode = self.node:findNode("SphericalCameraNode") if cameraSphericlNode then cameraSphericlNode:setCollectAnimationClip(false) local function curveAnimationEnd() -- 编辑器里需要更新 if cameraSphericlNode:isSphericalActive() then cameraSphericlNode:startUpdate() end end cameraSphericlNode:playCurveAnimation(curveAnimationEnd) end -- 递归遍历下面的所有子节点 local function visit(node) if node.stop then node:stop(); end if node.play then node:play(); end end self.node:visitNode(visit); end end function SceneEditor:stop() if self.node then self.node:stopCurveAnimation(); local cameraSphericlNode = self.node:findNode("SphericalCameraNode") if cameraSphericlNode then cameraSphericlNode:stopCurveAnimation() -- 编辑器里需要更新 if cameraSphericlNode:isSphericalActive() then cameraSphericlNode:startUpdate() end end -- 递归遍历下面的所有子节点 local function visit(node) if node.stop then node:stop(); end end self.node:visitNode(visit); end end -- 创建新的光效 function SceneEditor:newNode() self:closeNode(); local node = self:createNode("Scene"); node:setName("Root"); self:initNode(node) -- 创建一个新的地图 self.Map = require("Map"):new(); self.MapEditor = require("MapEditor"):new(); return node; end -- 设置地图的宽度和高度 function SceneEditor:initMap(mapWidth, mapHeight, tileWidth, tileHeight) if self.Map == nil then error("没有创建地图"); end -- 初始化地图宽度和高度 self.Map:initWidthAndHeight(mapWidth, mapHeight, tileWidth, tileHeight); self.Map:initObstacles(); self.MapEditor:init(); end -- 从文件载入节点 function SceneEditor:loadNode(nodeFile) local node = SceneEditor.super.loadNode(self, nodeFile); -- 创建一个题图载入资源 self.Map = require("Map"):new(); local arr = string.split(nodeFile, "."); self.Map:loadLua(arr[1] .. ".lmap"); self.MapEditor = require("MapEditor"):new(); self.MapEditor:init(); --[[-- 获取相机 local cameraNode = node:findNode("main_camera"); app.mainLayer:setActiveCamera(cameraNode:getCamera()); app.mainCamera = cameraNode:getCamera(); local winSize = cc.Director:getInstance():getWinSize(); app.mainCamera:setAspectRatio(winSize.width / winSize.height); app.cameraController:refreshSetting();--]] return node; end function SceneEditor:save(filename) SceneEditor.super.save(self, filename); local arr = string.split(filename, "."); -- 保存地图 self.Map:saveLua(arr[1] .. ".lmap"); self.Map:saveXml(arr[1] .. ".map"); end -- 关闭光效 function SceneEditor:closeNode() SceneEditor.super.closeNode(self); end -- 初始化光效,添加到场景中 function SceneEditor:initNode(node) SceneEditor.super.initNode(self , node); end function SceneEditor:createNode(nodeType) local node = SceneEditor.super.createNode(self , nodeType); if node.enableAutoPlay then node:enableAutoPlay(); end return node; end return SceneEditor;