私はLove2dスレッド関数に問題があります。私はどこでも理解できる説明や説明を見つけませんでした。Love2D、スレッドの実行と入力
最初:メインファイル内 私が得た:
thread1 = love.thread.newThread("ambient.lua")
thread2 = love.thread.newThread("ambient.lua")
thread1:start()
thread2:start()
ambient.luaは含まれています
random1 = love.math.random(1, 10)
gen1 = love.audio.newSource("audio/ambient/gen/a/gen_a_".."random1"..".mp3",
"static")
gen1:setVolume(1.0)
gen1:setLooping(false)
gen1:play()
を正常に動作
、問題は、私はVAR =スレッド1尋ねるときということです:isRunning()を同じステップまたは遅延で、オーディオが再生され、それを印刷しようとすると、エラー(おそらくヌル)がスローされます。オーディオが終了すると、私はそのメモリがクリアされて参照してください。私はリンクスレッド1:start()をマウスクリックして、それを短時間で複数回起動すると、メモリ使用量が狂ったように上昇し、サンプルの長さに似た時間が経ち、減少し始めます。質問は、私は複数のスレッドを作成していますか?その場合、サンプルが終了した後でも正しく終了しましたか?またはスレッドの生涯はちょうど1ステップ長いと私は同じスレッドで複数のオーディオソースを再生する作成ですか?小切手自体に問題がありますか?
thread1:start(volume, sampleID)
と私は糸自体にそれらをADDRESする方法見当もつかない:値を()開始:
次の問題は、私がスレッド1を使用する必要があるということです。ガイドと例は "vararg"リファレンスを示しています。私はまともな説明や、スレッドへの変数入力での "..."使用を含む例を見ていませんでした。私はそれを書く方法の例が必要です。このオーディオ・フィドルが素晴らしい例ではないとしても、私は確かにそれをAIに必要とします。複雑な入力、単純なx、y、サイズ、target_x、target_yの値は必要ありません。
'私はVARを頼む=スレッド1:あなたの例、ボリュームおよびスレッド内からsampleIDパラメータで
は次のように検索されますか? Luaは大文字と小文字を区別し、 'Thread1'は' thread1'と同じではありません。 'thread1'に割り当てた場合、' Thread1'は存在しませんので、nilに関するエラーが発生します。 – Vlad
ああ、ありがとう。コードの誤り。チェックはすぐに動作し、スレッドは即座に終了し、サンプルは再生してから終了します。ループを有効にすると、スレッドはまだ瞬時に終了し、サンプルは新しいスレッドで再生され、追加され続けるため、時間の経過とともにひどい結果が生じることがあります。 –
愛のオーディオプレーヤーは、自分のスレッドで生きているはずです。新しいオーディオソースをスケジュールする場所は問題ではなく、メインスレッドから行うことができます(おそらくそうする必要があります)。Loveのプレーヤーのスレッドは、あなたが入力したデータを引き続き使用します。 – Vlad