2016-12-19 10 views
1

私はLuaプログラミングを初めて勉強しています。画像を座標系から別の座標系に移動しようとする際に問題が生じています。ルアでイメージを移動するには?

私が作成しようとしているのは、X-Planeフライトシミュレータで使用することです。デフォルト言語がC++であり、多くの人が難しいと思うので、SASL(www.1-sim.com)というライブラリがあります。これはプラグイン(X-Plane用)の作成を容易にするために作成されたものです。

一般的に、SASLは一般的な行ではLuaとX-Planeの間のブリッジとして機能します。スクリプトは、実行中にX-Plane(DataRefs)から直接データを読み取ります。可能なコマンドや他の多くのことを実行します。

SASLを使用してコックピット/パネルゲージを作成する場合、クラスとして機能する基本ファイル「avionics.lua」を使用し、作業中の特定の航空機用に作成したすべてのゲージを読み込みます。例えば、私のavionics.luaファイルは次のようになります。

size = { 2048, 2048 } 

components = { 
flaps {}; 
}; 

、「サイズ」は描画すべきもののために使用される大きさであり、コンポーネントは、フラップがゲージ、この場合には、ゲージの配列です。

残りの作業はゲージ機能を作成することです。これは私の場合は「flaps.lua」という別のファイルで行われます。

flaps.luaの中で、2つの画像をロードするフラップインジケータ機能をコーディングする必要があります.1つはバックグラウンド用、もう1つはフラップインジケータ用です。

最初の画像は固定画像です。 2番目のフラップインジケータはフラップインジケータのDataRef(下のflapsDegreeプロパティ)に基づいて 'y'軸を移動します。

X-Planeが実行されているときの下のコードは、背景画像とフラップインジケータを最初の段階で表示しています(画像のように0です)。私は「Y」軸「を通してインジケータ」画像を移動するためのロジックを実装する必要がある場合enter image description here

size = {78,100} 

local flapsDegree = globalPropertyf("sim/cockpit2/controls/flap_ratio") 
local background = loadImage("gfx/Flaps.png") 
local indicator = loadImage("gfx/Flaps_Indicator.png") 
local flaps = get(flapsPosition) 

components = { 
texture { position = {945, 1011, 60, 100}, image = background}, 
texture { position = {959, 1097, 30, 9}, image = indicator}, 
} 

イメージは今、問題が来ます。

私は成功せずにこのコードを試してみました:

if flaps == 0.333 then 
indicator.position = {959, 1075, 30, 9} 
end 

は、どのように私はそれを達成するだろうか?

+1

ネイティブLuaは、これらの関数のいずれかを提供しないように私はあなたがhttps://github.com/der-On/saslこのライブラリについて話していると仮定することができます。詳細を追加してください。あなたが話しているコードをグーグルにする必要はありません。 – Piglet

+0

はい正しいです。私があなたに提供できるように、必要な情報を教えてください。 –

+0

あなたのプロジェクトについてもっと詳しく教えてください。あなたが使っているライブラリ、あなたが望むもののスクリーンショット、代わりに入手したものなど...これまでのところ、私はあなたがそのライブラリのドキュメンテーション特定の座標に物を描く方法について説明しています。 あなたは私たちと共有できる8行以上のコードを持っていると確信しています。 – Piglet

答えて

0

私はSALSライブラリに精通していません。私はちょうどそれを見ていた。

あなたが知る必要があるものは、リンクしたウェブサイトのマニュアルに記載されています。 特にhttp://www.1-sim.com/files/SASL300.pdf

各回の画面が更新されるたびに、各コンポーネントのdraw()関数が呼び出されます。

動的に何かを変更したい場合は、コンポーネントの描画機能にそれを入れなければなりません。

SALSソースを開くと、その使用方法を示す基本的なコンポーネントが見つかります。それらの1つは針です。LUA:あなたはマニュアルを確認した場合

-- default angle 
defineProperty("angle", 0) 

-- no image 
defineProperty("image") 


function draw(self) 
    local w, h = getTextureSize(get(image)) 

    local max = w 
    if h > max then 
     max = h 
    end 

    local rw = (w/max) * 100 
    local rh = (h/max) * 100 
    drawRotatedTexture(get(image), get(angle), 
     (100 - rw)/2, (100 - rh)/2, rw, rh) 
end 

あなたはdrawRotatedTexture機能が、ものを描画するための他の多くの機能だけでなく、があることがわかります。ちょうど周りを遊ぶ。あなたの目的のためにdrawTextureを試してください。

あなたはあなたが何が起こっているか理解するまで開いて、ライブラリ内のすべての単一のluaファイルをプログラムし、LuaのリファレンスマニュアルとSALSのドキュメントと一緒にそれを読むために持っているかわからない場合。既存のコードを理解すれば、簡単に拡張できます。

関連する問題