local EffectEditor = class("EffectEditor" , require("NodeEditor")); function EffectEditor:ctor() EffectEditor.super.ctor(self); end function EffectEditor:activate() EffectEditor.super.activate(self); app.setting.OriginAnchor = cc.p(0.5,0.5); app:refreshSetting(); -- 创建一个文本框,用于显示光效是否为无限长 local debugLabel = cc.Text:createNode(); debugLabel:setDefaults(); local config = debugLabel:getFontConfig(); config.fontSize = 40; config.texColor = cc.c4b(255,0,0,255); debugLabel:setFontConfig(config); -- 获取可见视野的像素大小 local screenSize = cc.Director:getInstance():getWinSizeInPixels(); debugLabel:setTranslation(screenSize.width / 2 , 100 , 0) debugLabel:setText("这个光效是无限长的,请注意!!!!"); self.debugText = debugLabel; self.InfinityTipTextNode = cc.Scene:create() self.InfinityTipTextNode:setActiveCamera(cc.Director:getInstance():getFixedCamera()) self.InfinityTipTextNode:addChild(self.debugText) app.mainScene:addChild(self.InfinityTipTextNode); self.InfinityTipTextNode:setVisible(false) end function EffectEditor:unactivate() -- 移除提示框 self.InfinityTipTextNode:removeFromParent() EffectEditor.super.unactivate(self); end function EffectEditor:play() -- supper class EffectEditor.super.play(self); self:checkInfinity(); end -- 检测光效是否为无限长的 function EffectEditor:checkInfinity() -- 如果是光效并且是无限长需要给出提示 if self.node and self.node.ClassName == "EffectNode" and self.node:isInfinite() then self.InfinityTipTextNode:setVisible(true) else self.InfinityTipTextNode:setVisible(false) end end -- 创建新的光效 function EffectEditor:newNode() self:closeNode(); local node = self:createNode("EffectNode"); self:initNode(node) return node; end -- 关闭光效 function EffectEditor:closeNode() EffectEditor.super.closeNode(self); end function EffectEditor:createNode(nodeType) local node = EffectEditor.super.createNode(self , nodeType); -- 默认播放一下 node:play(); return node; end -- 从文件载入节 -- 初始化光效,添加到场景中 function EffectEditor:initNode(node) EffectEditor.super.initNode(self , node) end -- 从文件载入节点 function EffectEditor:loadNode(nodeFile) local effectNode = EffectEditor.super.loadNode(self , nodeFile); effectNode:play(); self:checkInfinity(); return effectNode; end function EffectEditor:loadModelNode(filename) self:closeNode(); self.node = cc.ModelNode:createNode(); self.node:setName("ModelNode") self.node:setMeshFile(filename); self:initNode(self.node); return self.node; end -- 创建新的光效 function EffectEditor:newModelNode() self:closeNode(); local node = self:createNode("ModelNode"); self:initNode(node) return node; end function EffectEditor:loadSoundNode(filename) self:closeNode(); self.node = cc.SoundSourceNode:createNode(); self.node.SoundSource:setAudioFile(filename); self:initNode(self.node); return self.node; end -- 创建新的光效 function EffectEditor:newSoundNode() self:closeNode(); local node = self:createNode("SoundSourceNode"); self:initNode(node) return node; end return EffectEditor;