LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

Ага, спасибо, мне уже подсказали. Очень странная конструкция, как по мне. Ведь мы в начале строки объект уже указали. И тут вдруг нам надо указывать его еще раз в скобках. Ну такое…

Первый вариант блока у меня выходи вот такой:


function mostraKrtM1x1(signalKrt)
	if signalKrt=="Show" then
		jj=20
		j=394
		for i=0,16 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
		jj=20
		j=394-6
		for i=64,80 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
	elseif signalKrt=="Hide" then
		for i=0,16 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
		for i=64,80 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
	end
end

Но это хрень. Слишком громоздко. Второй вариант такой:

function mostraKrtM11x11(signalKrt)
	if signalKrt=="Show" then
		ranges = {{1, 16}, {65, 80},{129,144},{193,208},{257,272},{321,336},{385,400},{449,464}}
		j=394
		for range,value in pairs(ranges) do
			jj=20
			for rangeT=value[1],value[2] do
				print (rangeT)
				iconRis:configure(rangeT,545,350)
				iconRisText:configure(rangeT,9.1,6,0,0,rangeT)
				iconRis[rangeT]:SetPoint("BOTTOMLEFT", jj, j)
				jj=jj+9.1
			end
			j=j-6
		end
	else

	end
end

Но я хочу через формулу. То есть высчитывать старт строки и конец строки для блоков формулой. Сейчас выходит что то вроде такого:

for i=1,8 do  print((64 * (i - 1) + 1) .. ', ' .. (64 * (i - 1) + 16)) end 

То есть начало строки (64 * (i - 1) + 1), конец строки (64 * (i - 1) + 16)

Второй блок будет идти конец строки+16 итд.. теперь я думаю как просчитать удобнее остальные блоки и как на основе этого сделать функцию.

Люто до скрежета в зубах мешает старт с единицы, а не с нуля. Это жуть.

тут еще один косяк. Если я вставляю скрытие кусков сразу в цикл, где их рисуют, это не работает. посмотри на мой первый пример. Там я скрываю отдельными циклами. Меня это нервирует. Не понимаю почему так.

Исправление LightDiver, :

Ага, спасибо, мне уже подсказали. Очень странная конструкция, как по мне. Ведь мы в начале строки объект уже указали. И тут вдруг нам надо указывать его еще раз в скобках. Ну такое…

Первый вариант блока у меня выходи вот такой:


function mostraKrtM1x1(signalKrt)
	if signalKrt=="Show" then
		jj=20
		j=394
		for i=0,16 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
		jj=20
		j=394-6
		for i=64,80 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
	elseif signalKrt=="Hide" then
		for i=0,16 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
		for i=64,80 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
	end
end

Но это хрень. Слишком громоздко. Второй вариант такой:

function mostraKrtM11x11(signalKrt)
	if signalKrt=="Show" then
		ranges = {{1, 16}, {65, 80},{129,144},{193,208},{257,272},{321,336},{385,400},{449,464}}
		j=394
		for range,value in pairs(ranges) do
			jj=20
			for rangeT=value[1],value[2] do
				print (rangeT)
				iconRis:configure(rangeT,545,350)
				iconRisText:configure(rangeT,9.1,6,0,0,rangeT)
				iconRis[rangeT]:SetPoint("BOTTOMLEFT", jj, j)
				jj=jj+9.1
			end
			j=j-6
		end
	else

	end
end

Но я хочу через формулу. То есть высчитывать старт строки и конец строки для блоков формулой. Сейчас выходит что то вроде такого:

for i=1,8 do  print((64 * (i - 1) + 1) .. ', ' .. (64 * (i - 1) + 16)) end 

То есть начало строки (64 * (i - 1) + 1), конец строки (64 * (i - 1) + 16)

Второй блок будет идти конец строки+16 итд.. теперь я думаю как просчитать удобнее остальные блоки и как на основе этого сделать функцию.

Люто до скрежета в зубах мешает старт с единицы, а не с нуля. Это жуть.

Исходная версия LightDiver, :

Ага, спасибо, мне уже подсказали. Очень странная конструкция, как по мне. Ведь мы в начале строки объект уже указали. И тут вдруг нам надо указывать его еще раз в скобках. Ну такое…

Первый вариант блока у меня выходи вот такой:


function mostraKrtM1x1(signalKrt)
	if signalKrt=="Show" then
		jj=20
		j=394
		for i=0,16 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
		jj=20
		j=394-6
		for i=64,80 do
			iconRis:configure(i,545,350)
			iconRisText:configure(i,9.1,6,0,0,i)
			iconRis[i]:SetPoint("BOTTOMLEFT", jj, j)
			jj=jj+9.1
		end
	elseif signalKrt=="Hide" then
		for i=0,16 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
		for i=64,80 do
			iconRisText[i][signalKrt](iconRisText[i])
		end
	end
end

Но это хрень. Слишком громоздко. Второй вариант такой:

function mostraKrtM11x11(signalKrt)
	if signalKrt=="Show" then
		ranges = {{1, 16}, {65, 80},{129,144},{193,208},{257,272},{321,336},{385,400},{449,464}}
		j=394
		for range,value in pairs(ranges) do
			jj=20
			for rangeT=value[1],value[2] do
				print (rangeT)
				iconRis:configure(rangeT,545,350)
				iconRisText:configure(rangeT,9.1,6,0,0,rangeT)
				iconRis[rangeT]:SetPoint("BOTTOMLEFT", jj, j)
				jj=jj+9.1
			end
			j=j-6
		end
	else

	end
end

Но я хочу через формулу. То есть высчитывать старт строки и конец строки для блоков формулой. Сейчас выходит что то вроде такого:

for i=1,8 do  print((64 * (i - 1) + 1) .. ', ' .. (64 * (i - 1) + 16)) end 

То есть начало строки (64 * (i - 1) + 1), конец строки (64 * (i - 1) + 16)

Второй блок будет идти конец строки+16 итд.. теперь я думаю как просчитать удобнее остальные блоки и как на основе этого сделать функцию.