|
- 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;
|