二年ぶりの更新。カサコンです。
どんだけ長い自由研究だよって話ですよねーw
さて。前回は何したんでしたっけ(アホ
そうそう。JSON形式のスキンをLua形式にしてtable.insertを使って要素を追加したんでしたよね。
今回は変数を使ってみる練習をしてみます。
Gitのプロジェクトだと21_useVariableってのがサンプルです。
また、ここからはプログラミングの話にちょっと頭を突っ込むので良くわからない方もいるかと思います。
自分もなるべく分かりやすく書くつもりではあるのですが自分はいわゆる趣味グラマーなので本業の方ほど分かりやすくは多分できないです。
興味がある方はドットインストールなどでプログラミングに触れてみるのもいいかと思います。
--[[
変数を使ってみる
画像配置サンプル
]]
local header = {
type = 5, -- 0:7k, 1:5k, 2:14k, 3:10k, 4:9k, 5:select, 6:decide, 7:result, 15:courceresult, 16:24k, 17:24kDouble
name = "21_useVariable", -- スキンの名前
w = 1920, -- スキンの横幅
h = 1080, -- スキンの高さ
input = 500,
fadeout = 500,
property = {},
filepath = {},
offset = {}
}
local function main()
-- ヘッダ情報のコピー
local skin = {}
for k, v in pairs(header) do
skin[k] = v
end
skin.source = {
{id = 1, path = "img/image01.png"},
}
skin.image = {
{id = "orange", src = 1, x = 0, y = 0, w = 300, h = 300},
{id = "blue", src = 1, x = 0, y = 700, w = 300, h = 300},
}
-- 変数を定義
local dstWidth = 300
local dstHeight = 300
skin.destination = {}
-- 定義した変数をw値とh値に使用(メンテナンスが楽)
table.insert(skin.destination, {
id = "orange", dst = {
{x = 0, y = 0, w = dstWidth, h = dstHeight}
}
})
-- 変数の値を変化させてみる
dstWidth = 150
dstHeight = dstHeight - 200
-- 変数の値が変化しているか確認
table.insert(skin.destination, {
id = "blue", dst = {
{x = 1620, y = 0, w = dstWidth, h = dstHeight}
}
})
return skin
end
return{
header = header,
main = main
}
変数を宣言してみる
そもそも変数って何やねん!って話ですがざっくり言ってしまえば『入れ物』です。
言語によっては変数に入れられるモノの指定とかあったりするのですがLuaの変数は何でも入れられます。数値でも文字でもなんでも入れられます。
local XXX(数字以外で始まる文字列)と入力すれば変数を宣言することができます。
別にlocalを入れなくても変数は宣言出来るのですがその場合はグローバル変数というちょっと扱いが難しいものになってしまうので省きます。興味があったら調べてみるといいです。
-- 変数を定義
local dstWidth = 300
local dstHeight = 300
上の例ではdstWidthとdstHeightという2つの変数を宣言していてそれぞれ300という数値が入っています。=ってのはプログラミングでは代入という意味です。イコール(等しい)じゃないです。
変数を使ってみる
変数を宣言したら早速使ってみます。
下ではwとhの値に先程宣言した2つの変数名が入っていると思います。
こうすることでwとhの値に代入していた300という値が適用されます。
-- 定義した変数をw値とh値に使用(メンテナンスが楽)
table.insert(skin.destination, {
id = "orange", dst = {
{x = 0, y = 0, w = dstWidth, h = dstHeight}
}
})
ただこれだけだと『わざわざそんな事しなくても直接wとhに入力すればよくね?』ってなりますよね。
今回の場合はそれでも問題ないのですがもし上のような例が1000や2000個もあったら修正が必要になった場合にとんでもなく面倒なことになります。すべての値を置換していくのはいくら置換機能があるとは言っても骨が折れますよね。
これが変数を使っている場合は宣言した部分さえ変更してしまえば変数を使っている箇所すべてが変更されるのでメンテナンスがめちゃくちゃ楽になるんですよね。変数を使う最大のメリットと言ってもいいと思います。
変数をいじってみる
変数は宣言して代入してしまうとこの値しか使えない!ってことはなくて色々細工もできたりします。
下の例では一度宣言したdstWidthとdstHeightの変数に値を上書きしています。
計算式も入れることができて例えばdstHeightにはdstHeightの値(300)から200を引いた100がdstHeightに代入されることになります。
-- 変数の値を変化させてみる
dstWidth = 150
dstHeight = dstHeight - 200
-- 変数の値が変化しているか確認
table.insert(skin.destination, {
id = "blue", dst = {
{x = 1620, y = 0, w = dstWidth, h = dstHeight}
}
})
今回のプログラムを動作してみるとこうなります。
オレンジ色の部分は300x300、青色の部分は150x100の大きさで表示されているのがなんとなくわかるかなと思います。