0

新しいツールバーを実装するために、既存のプログラムを修正しています。このプログラムは、Lua スクリプトを使用して、Flash アニメーションとコマンドの表示と処理を処理します。Flash アニメーション ウィンドウを呼び出すことはできますが、コマンド リスナーを追加する行が失敗します。

HUD.AddFSCommandListener(self.file_SWF, self.id)

エラーは次のとおりです。「パラメーターの型が正しくありません。関数 HUD.AddFSCommandListener(movie, entityId) はポインター型のパラメーター 2 を期待しています (提供された型 Null)」。

私はシステムをくまなく調べましたが、何を間違っているのかわかりませんが、何らかの登録手順が正しく行われていないのではないかと思います。私が取り組んでいるゲームは CryEngine を使用していますが、それについて質問する人はあまりいません。ただし、このエラーが別のシステムにある種のアナログを持っている場合は、おそらく、何をする必要があるかについて頭に浮かぶかもしれません.

ありがとう。

4

1 に答える 1

0

あなたの問題は、実際に行う必要がある可能性があります

HUD:AddFSCommandListener(self.file_SWF, self.id)

問題は、self.id を認識していないことではなく、ドット表記を使用して呼び出すと、関数がテーブル関数であることが意図されていた場合、渡す最初のパラメーターが関数の「self」パラメーターになります。したがって、探している 2 番目のパラメーターは実際には nil です。

コロン関数表記は、self がテーブル (この場合は HUD) になる self 変数を暗黙的に渡すためのシンタックス シュガーです。そのため、ほとんどの lua インターフェイスは2 番目のパラメーターからカウントを開始します。つまり、それが話している 2 番目のものは、実際には 3 番目のものです。

例:

HUD = {}

function HUD:AddFSCommandListener(file, id)

end

実際にはこれと同等です:

HUD = {}

HUD.AddFSCommandListener = function( self, file, id )

end

そのため、コロンの代わりにドットを使用して呼び出すと、file_swf が self パラメーターとして期待される可能性が最も高いものに押し込まれます。

于 2012-10-31T13:29:15.017 に答える