
-- 移除父节点的所有子节点
if parent then
SL:print("存在!")
GUI:removeAllChildren(parent)
end
radius = 100
-- 创建父窗口
local parent = GUI:Win_Create("Win_1", 500, 500, 1136, 640)
-- 定义 8 个方向的向量
local directions = {
cc.p(0, 1), -- 上
cc.p(1, 1), -- 右上
cc.p(1, 0), -- 右
cc.p(1, -1), -- 右下
cc.p(0, -1), -- 下
cc.p(-1, -1), -- 左下
cc.p(-1, 0), -- 左
cc.p(-1, 1) -- 左上
}
-- 公转中心点
local centerX, centerY = 0, 0 -- 父窗口中心点
local radius = 100 -- 公转半径
local angleSpeed = 1 -- 公转角速度(度/帧)
-- 创建火球术特效列表
local fireballs = {}
for i, dir in ipairs(directions) do
local fireball = GUI:Effect_Create(parent, "sfx"..i, 0, 0, 0, 56, 0, 0, 3, 0.5)
if not fireball then
SL:print("创建火球术特效失败,请检查参数或资源路径")
return
end
yanse = cc.c3b(math.random(255), math.random(255), math.random(255))
-- 设置特效颜色为随机颜色
fireball:setColor(yanse)
fireball:setOpacity(255)
-- 初始化公转角度
fireball.angle = (i - 1) * 45 -- 每个特效初始角度相差 45 度
table.insert(fireballs, fireball)
end
-- 更新火球术位置的函数
local function updateFireballPosition(dt)
for i, fireball in ipairs(fireballs) do
if not fireball or tolua.isnull(fireball) then -- 检查对象是否已被销毁
if schedulerEntry then
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(schedulerEntry)
schedulerEntry = nil
end
return
end
-- 更新公转角度
fireball.angle = fireball.angle + angleSpeed
if fireball.angle >= 720 then
fireball.angle = fireball.angle - 720 -- 角度超过 360 度时重置
end
SL:print(radius)
-- 计算公转轨迹上的位置
local radians = math.rad(fireball.angle) -- 将角度转换为弧度
local newX = centerX + radius * math.cos(radians)
local newY = centerY + radius * math.sin(radians)
-- 设置特效的新位置
fireball:setPosition(newX, newY)
end
end
-- 每帧更新火球术位置
if not schedulerEntry then -- 使用全局或局部变量存储调度器引用
schedulerEntry = cc.Director:getInstance():getScheduler():scheduleScriptFunc(updateFireballPosition, 0, false)
end