Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

125 linhas
3.1 KiB

  1. local EffectEditor = class("EffectEditor" , require("NodeEditor"));
  2. function EffectEditor:ctor()
  3. EffectEditor.super.ctor(self);
  4. end
  5. function EffectEditor:activate()
  6. EffectEditor.super.activate(self);
  7. app.setting.OriginAnchor = cc.p(0.5,0.5);
  8. app:refreshSetting();
  9. -- 创建一个文本框,用于显示光效是否为无限长
  10. local debugLabel = cc.Text:createNode();
  11. debugLabel:setDefaults();
  12. local config = debugLabel:getFontConfig();
  13. config.fontSize = 40;
  14. config.texColor = cc.c4b(255,0,0,255);
  15. debugLabel:setFontConfig(config);
  16. -- 获取可见视野的像素大小
  17. local screenSize = cc.Director:getInstance():getWinSizeInPixels();
  18. debugLabel:setTranslation(screenSize.width / 2 , 100 , 0)
  19. debugLabel:setText("这个光效是无限长的,请注意!!!!");
  20. self.debugText = debugLabel;
  21. self.InfinityTipTextNode = cc.Scene:create()
  22. self.InfinityTipTextNode:setActiveCamera(cc.Director:getInstance():getFixedCamera())
  23. self.InfinityTipTextNode:addChild(self.debugText)
  24. app.mainScene:addChild(self.InfinityTipTextNode);
  25. self.InfinityTipTextNode:setVisible(false)
  26. end
  27. function EffectEditor:unactivate()
  28. -- 移除提示框
  29. self.InfinityTipTextNode:removeFromParent()
  30. EffectEditor.super.unactivate(self);
  31. end
  32. function EffectEditor:play()
  33. -- supper class
  34. EffectEditor.super.play(self);
  35. self:checkInfinity();
  36. end
  37. -- 检测光效是否为无限长的
  38. function EffectEditor:checkInfinity()
  39. -- 如果是光效并且是无限长需要给出提示
  40. if self.node and self.node.ClassName == "EffectNode" and self.node:isInfinite() then
  41. self.InfinityTipTextNode:setVisible(true)
  42. else
  43. self.InfinityTipTextNode:setVisible(false)
  44. end
  45. end
  46. -- 创建新的光效
  47. function EffectEditor:newNode()
  48. self:closeNode();
  49. local node = self:createNode("EffectNode");
  50. self:initNode(node)
  51. return node;
  52. end
  53. -- 关闭光效
  54. function EffectEditor:closeNode()
  55. EffectEditor.super.closeNode(self);
  56. end
  57. function EffectEditor:createNode(nodeType)
  58. local node = EffectEditor.super.createNode(self , nodeType);
  59. -- 默认播放一下
  60. node:play();
  61. return node;
  62. end
  63. -- 从文件载入节
  64. -- 初始化光效,添加到场景中
  65. function EffectEditor:initNode(node)
  66. EffectEditor.super.initNode(self , node)
  67. end
  68. -- 从文件载入节点
  69. function EffectEditor:loadNode(nodeFile)
  70. local effectNode = EffectEditor.super.loadNode(self , nodeFile);
  71. effectNode:play();
  72. self:checkInfinity();
  73. return effectNode;
  74. end
  75. function EffectEditor:loadModelNode(filename)
  76. self:closeNode();
  77. self.node = cc.ModelNode:createNode();
  78. self.node:setName("ModelNode")
  79. self.node:setMeshFile(filename);
  80. self:initNode(self.node);
  81. return self.node;
  82. end
  83. -- 创建新的光效
  84. function EffectEditor:newModelNode()
  85. self:closeNode();
  86. local node = self:createNode("ModelNode");
  87. self:initNode(node)
  88. return node;
  89. end
  90. function EffectEditor:loadSoundNode(filename)
  91. self:closeNode();
  92. self.node = cc.SoundSourceNode:createNode();
  93. self.node.SoundSource:setAudioFile(filename);
  94. self:initNode(self.node);
  95. return self.node;
  96. end
  97. -- 创建新的光效
  98. function EffectEditor:newSoundNode()
  99. self:closeNode();
  100. local node = self:createNode("SoundSourceNode");
  101. self:initNode(node)
  102. return node;
  103. end
  104. return EffectEditor;