Автору темы "Блокировка перемещения рейдфреймов"
Автору темы http://forum.wowcircle.com/showthrea...00#post4515300
Непонятно зачем создавать тему в разделе, где тебе никто не сможет ответить в ней, не понятно.
По сабжу:
Цитата:
Собственно , проблема в том, что, если фрейм RaidPullout1/5 не существует, аддон крашит. Вопрос, как добавить условие на проверку существования фрейма ?
Ну как вариант так: if RaidPullout1 ~= nil then ... end;, в твоем варианте раз 10 нужно будет условие это вбивать, и это для 5 фреймов, это не очень целесообразно даже если функцию сделать простенькую, а если фреймов нужно больше чем 5, например 25, то будет просто гора кода. По моему лучшим вариантом в данной ситуации зная имена фреймов будет перебрать все дочерние фреймы у UIParent и отсеять нужные и уже с ними работать.
Скрытый текст
PHP код:
--Блок рейдфреймов
local button = CreateFrame("Button", id, RaidFrame, "UIPanelButtonTemplate");
local text = "блокировка позиции рейдфреймов вкл/выкл";
button:SetSize(80, 18);
button:SetScale(1.0);
button:SetAlpha(1.0);
button:SetPoint("CENTER", RaidFrame, "TOP", -84, -24);
button:SetText("блок");
button:SetScript("OnLeave", function() GameTooltip:Hide() end);
button:SetScript("OnEnter", function()
GameTooltip:SetOwner(button, "ANCHOR_RIGHT");
GameTooltip:AddLine(text);
GameTooltip:Show();
end);
button:SetScript("OnClick", function(self, button)
local Report = false;
for i = 1,select('#',UIParent:GetChildren()) do
local frame = select(i, UIParent:GetChildren());
if frame:GetName() and frame:GetName():find('RaidPullout%d') then
if frame:IsMovable() then
frame:SetMovable(false);
frame:EnableMouse(false);
if Report == false then
print("|cff00ff00[блок рейдфреймов ВКЛЮЧЕН]|r");
Report = true;
end;
else
frame:SetMovable(true);
frame:EnableMouse(true);
if Report == false then
print("|cFFF00000[блок рейдфреймов ОТКЛЮЧЕН]|r");
Report = true;
end;
end;
end;
end;
end)
[свернуть]
Не проверял, но вроде должно работать.))