datarefは単純な整数なので問題無いように思えるが、Luaではできる右揃えがFlyWithLuaでは出来ない。
下のように5桁の場合は問題ないが、桁が減っていくと左揃えになってしまう。実際の表示は右揃え。
そこで、対策として最初から5桁表示でフォーマットをする。これは出来る。その代わり3桁の場合、200という表示にはならず00200となってしまう。
そこで頭の0を空白画像を作って見えなくする手法をとる。そうすると下の画像のように数値の位置は後ろ揃えで位置が変化しないで問題なく表示される。2の前の00は空白画像に置き換えられている。
58と81行目が空白画像にあたる。
-- 画像県警の初期設定 ---- -- E_Camera Move ---- local image_7seg_0 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_0.png") local image_7seg_1 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_1.png") local image_7seg_2 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_2.png") local image_7seg_3 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_3.png") local image_7seg_4 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_4.png") local image_7seg_5 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_5.png") local image_7seg_6 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_6.png") local image_7seg_7 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_7.png") local image_7seg_8 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_8.png") local image_7seg_9 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_9.png") local image_7seg_point = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_point.png") local image_7seg_plus = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_plus.png") local image_7seg_minus = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_minus.png") local image_7seg_space = float_wnd_load_image(SCRIPT_DIRECTORY .. "/img/7seg_w_space.png") DataRef("COURSE_7segment", "laminar/B738/autopilot/course_pilot") DataRef("IAS_MACH_7segment", "laminar/B738/autopilot/mcp_speed_dial_kts_mach") DataRef("mcp_hdg_dial_7segment", "laminar/B738/autopilot/mcp_hdg_dial") DataRef("mcp_ALT_dial_7segment", "laminar/B738/autopilot/mcp_alt_dial") DataRef("ap_Vvi_pos_7segment", "laminar/B738/autopilot/ap_vvi_pos") --------------------------------------------------------------------------------- view_selector_wnd = float_wnd_create(300, 150, 1, true) float_wnd_set_position(view_selector_wnd, 300, 100) float_wnd_set_title(view_selector_wnd, "ALT 7segment Test") float_wnd_set_imgui_builder(view_selector_wnd, "view_selector_build_wnd") float_wnd_set_onclose(view_selector_wnd, "on_close") --------------------------------------------------------------------------------- function view_selector_build_wnd(view_selector_wnd, x, y) -------------------- ALTITUDE 7セグメント表示 ------------------------------------------------------------------------------ --頭揃えになって、後ろに桁が増えるので位置が変化してしまう。最初から一番大きい桁にすると位置が固定になる。ここでは万の数値になるので5桁になる。 mcp_ALT_dial_7segment = string.format("%05d", mcp_ALT_dial_7segment) --dataref値整数 2300の場合、これで0をつけた5桁で02300と表示されるようになる。 --後は頭に付く0を空白に変えることになる。 --桁毎に数値を取り出す mcp_ALT_dial_5 = string.sub(mcp_ALT_dial_7segment, 1, 1) --5桁目を取得 mcp_ALT_dial_4 = string.sub(mcp_ALT_dial_7segment, 2, 2) --4 mcp_ALT_dial_3 = string.sub(mcp_ALT_dial_7segment, 3, 3) --3 mcp_ALT_dial_2 = string.sub(mcp_ALT_dial_7segment, 4, 4) --2 mcp_ALT_dial_1 = string.sub(mcp_ALT_dial_7segment, 5, 5) --1 imgui.TextUnformatted("A-5 : " .. mcp_ALT_dial_5) --5桁目 imgui.TextUnformatted("A-4 : " .. mcp_ALT_dial_4) --4 imgui.TextUnformatted("A-3 : " .. mcp_ALT_dial_3) --3桁目 imgui.TextUnformatted("A-2 : " .. mcp_ALT_dial_2) --2 imgui.TextUnformatted("A-1 : " .. mcp_ALT_dial_1) --1 imgui.TextUnformatted("dataref: " .. mcp_ALT_dial_5 .. mcp_ALT_dial_4 .. mcp_ALT_dial_3 .. mcp_ALT_dial_2 .. mcp_ALT_dial_1) --桁が増えると増えと桁は後ろに下がる、右揃えにしたいがならなかった。 imgui.SetCursorPosX(100) imgui.SetCursorPosY(50) if mcp_ALT_dial_5 == "0" then --5桁目 imgui.Image(image_7seg_space, 17, 29) elseif mcp_ALT_dial_5 == "1" then imgui.Image(image_7seg_1, 17, 29) elseif mcp_ALT_dial_5 == "2" then imgui.Image(image_7seg_2, 17, 29) elseif mcp_ALT_dial_5 == "3" then imgui.Image(image_7seg_3, 17, 29) elseif mcp_ALT_dial_5 == "4" then imgui.Image(image_7seg_4, 17, 29) elseif mcp_ALT_dial_5 == "5" then imgui.Image(image_7seg_5, 17, 29) elseif mcp_ALT_dial_5 == "6" then imgui.Image(image_7seg_6, 17, 29) elseif mcp_ALT_dial_5 == "7" then imgui.Image(image_7seg_7, 17, 29) elseif mcp_ALT_dial_5 == "8" then imgui.Image(image_7seg_8, 17, 29) elseif mcp_ALT_dial_5 == "9" then imgui.Image(image_7seg_9, 17, 29) end imgui.SameLine(nil, 5) if mcp_ALT_dial_4 == "0" then --4桁目 imgui.Image(image_7seg_space, 17, 29) elseif mcp_ALT_dial_4 == "1" then imgui.Image(image_7seg_1, 17, 29) elseif mcp_ALT_dial_4 == "2" then imgui.Image(image_7seg_2, 17, 29) elseif mcp_ALT_dial_4 == "3" then imgui.Image(image_7seg_3, 17, 29) elseif mcp_ALT_dial_4 == "4" then imgui.Image(image_7seg_4, 17, 29) elseif mcp_ALT_dial_4 == "5" then imgui.Image(image_7seg_5, 17, 29) elseif mcp_ALT_dial_4 == "6" then imgui.Image(image_7seg_6, 17, 29) elseif mcp_ALT_dial_4 == "7" then imgui.Image(image_7seg_7, 17, 29) elseif mcp_ALT_dial_4 == "8" then imgui.Image(image_7seg_8, 17, 29) elseif mcp_ALT_dial_4 == "9" then imgui.Image(image_7seg_9, 17, 29) end imgui.SameLine(nil, 5) if mcp_ALT_dial_3 == "0" then imgui.Image(image_7seg_0, 17, 29) elseif mcp_ALT_dial_3 == "1" then imgui.Image(image_7seg_1, 17, 29) elseif mcp_ALT_dial_3 == "2" then imgui.Image(image_7seg_2, 17, 29) elseif mcp_ALT_dial_3 == "3" then imgui.Image(image_7seg_3, 17, 29) elseif mcp_ALT_dial_3 == "4" then imgui.Image(image_7seg_4, 17, 29) elseif mcp_ALT_dial_3 == "5" then imgui.Image(image_7seg_5, 17, 29) elseif mcp_ALT_dial_3 == "6" then imgui.Image(image_7seg_6, 17, 29) elseif mcp_ALT_dial_3 == "7" then imgui.Image(image_7seg_7, 17, 29) elseif mcp_ALT_dial_3 == "8" then imgui.Image(image_7seg_8, 17, 29) elseif mcp_ALT_dial_3 == "9" then imgui.Image(image_7seg_9, 17, 29) end imgui.SameLine(nil, 5) if mcp_ALT_dial_2 == "0" then imgui.Image(image_7seg_0, 17, 29) elseif mcp_ALT_dial_2 == "1" then imgui.Image(image_7seg_1, 17, 29) elseif mcp_ALT_dial_2 == "2" then imgui.Image(image_7seg, 17, 29) elseif mcp_ALT_dial_2 == "3" then imgui.Image(image_7seg_3, 17, 29) elseif mcp_ALT_dial_2 == "4" then imgui.Image(image_7seg_4, 17, 29) elseif mcp_ALT_dial_2 == "5" then imgui.Image(image_7seg_5, 17, 29) elseif mcp_ALT_dial_2 == "6" then imgui.Image(image_7seg_6, 17, 29) elseif mcp_ALT_dial_2 == "7" then imgui.Image(image_7seg_7, 17, 29) elseif mcp_ALT_dial_2 == "8" then imgui.Image(image_7seg_8, 17, 29) elseif mcp_ALT_dial_2 == "9" then imgui.Image(image_7seg_9, 17, 29) end imgui.SameLine(nil, 5) if mcp_ALT_dial_1 == "0" then imgui.Image(image_7seg_0, 17, 29) elseif mcp_ALT_dial_1 == "1" then imgui.Image(image_7seg_1, 17, 29) elseif mcp_ALT_dial_1 == "2" then imgui.Image(image_7seg_2, 17, 29) elseif mcp_ALT_dial_1 == "3" then imgui.Image(image_7seg_3, 17, 29) elseif mcp_ALT_dial_1 == "4" then imgui.Image(image_7seg_4, 17, 29) elseif mcp_ALT_dial_1 == "5" then imgui.Image(image_7seg_5, 17, 29) elseif mcp_ALT_dial_1 == "6" then imgui.Image(image_7seg_6, 17, 29) elseif mcp_ALT_dial_1 == "7" then imgui.Image(image_7seg_7, 17, 29) elseif mcp_ALT_dial_1 == "8" then imgui.Image(image_7seg_8, 17, 29) elseif mcp_ALT_dial_1 == "9" then imgui.Image(image_7seg_9, 17, 29) end end function on_close(view_selector_wnd) end