22 Сентября 2024, 09:35:45
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Запомнить переменную
Запомнить переменную
(Прочитано 6931 раз)
  [1]
Печать
Odie | * | Новичок | Сообщений: 11 | « 09 Июля 2010, 00:48:50 »
Запомнить переменную |
0
Всем доброго времени суток!

С Lua ещё не знаком. до этого не много писал на PHP, MySQL.
Собственно задумал сделать GUI, 4 камеры, 4 кнопки. нажимаем на каждую кнопку попадаем на соотв. камеру.
Сначала пытался сделать с помощи переключателей, а потом решил попробовать сделать в коде.
В общем сценарий такой
В Lua прописано это:
Код:
-- CallChannel function is called when channel is called
function CallChannel()
end

-- GetValue function is called when this channels is used as Value
function GetValue()
local flop1 = channel.GetChild(0)
local f1 = flop1:GetValue()
local flop2 = channel.GetChild(1)
local f2 = flop2:GetValue()
local flop3 = channel.GetChild(2)
local f3 = flop3:GetValue()
local flop4 = channel.GetChild(3)
local f4 = flop4:GetValue()

if f1 == 1 then
f1 = 0
f2 = 0
f3 = 0
f4 = 0
end

if f2 == 1 then
f2 = 1
f1 = 0
f3 = 0
f4 = 0
end

if f3 == 1 then
f3 = 2
f1 = 0
f2 = 0
f4 = 0
end

if f4 == 1 then
f4 = 3
f2 = 0
f3 = 0
f1 = 0
end
local all = f1 + f2 + f3 + f4
return all
end

к нему подключается 4 канала с кнопками. при наведении на каждую и клику, Lua канал получает еденицу, проверяет какая из кнопок нажата. назначает этой кнопки её номер остольные обнуляет. потом все значения складываются и это значение посылается на Channel Swithc где и переключается нужная камера.

собственно и сейчас всё работает. только пока кнопку на мышки держишь, и курсор с неё не отводишь)))

Да бы избавиться от этого не большого не удобства, хотел спросить совета, как можно запомнить полученное значение, пока программка не получило новой команды:?
можно ли написать какое то условие типа если все 4 кнопки = 0, то выводим запомненное число:?
прошу прощения... синтаксис мне пока ещё не понятен...
Зарание спасибо!
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #1 09 Июля 2010, 22:41:49 »
Re: Запомнить переменную |
1
to Odie

Тут можно было и без луа обойтись - к событию каждой кнопки прицепить SetValue, например. Для первой  - 0, для второй - 1 и т.д. А само значение цеплять к свичу.

Сценарий луа вызывается каждый тик заного, поэтому все переменные, после его окончания, уничтожаются, а при следующем вызове создаются снова. Сохранить значения можно во внешнем канале Value, например, и использовать его для свича. Если так хочеться, что бы именно канал луа возвращал это значение, то его можо просто протащить)
Типа того -
Код:
 
function GetValue()
local flop1 = channel.GetChild(0):GetValue()
local flop2 = channel.GetChild(1):GetValue()
local flop3 = channel.GetChild(2):GetValue()
local flop4 = channel.GetChild(3):GetValue()
local savedResultValue = channel.GetChild(4)
if flop1==1 then
savedResultValue:SetValue(0)
end
if flop2==1 then
savedResultValue:SetValue(1)
end
if flop3==1 then
savedResultValue:SetValue(2)
end
if flop4==1 then
savedResultValue:SetValue(3)
end
return savedResultValue:GetValue()
end

Чтобы это заработало, надо пятую валую прицепить, что бы она значения хранила.
« Последнее редактирование: 09 Июля 2010, 22:49:27 от dfx »
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Запомнить переменную
Перейти в: