2012-10-29 8 views
0

새 툴바를 구현하기 위해 기존 프로그램을 개정 중입니다. 이 프로그램은 Lua 스크립트를 사용하여 Flash 애니메이션 및 명령의 표시 및 처리를 처리합니다. Flash 애니메이션 창을 불러올 수는 있지만 명령 수신기를 추가하는 줄은 실패합니다.루아 스크립트가 self.id를 인식하지 못합니다.

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

오류 : "잘못된 매개 변수 유형 HUD.AddFSCommandListener (영화, ENTITYID) 형 포인터의 매개 변수 2 (제공 형 널) 기대를 작동합니다." .

저는 시스템을 끝내고 돌아 다녔고, 올바르게하고 있지 않은 일종의 등록 단계가 있다고 의심하지만 제가 잘못하고있는 것을 파악할 수 없습니다. 제가 작업중인 게임은 CryEngine을 사용합니다. 많은 사람들이 그것에 대해 질문을하지 않습니다. 그러나이 오류가 다른 시스템에서 어떤 종류의 아날로그를 가지고 있다면, 아마도 그것은 내가해야 할 일에 관해서 마음을 자극 할 것입니다.

감사합니다.

+0

다음은 http://create.bluemars.com/wiki/index.php/HUD 링크입니다. 첫 번째 매개 변수는 self.Hud.file_SWF가되어야합니다. –

+0

SWF 파일에 액세스해도 문제가 발생하지 않습니다. 문제는 두 번째 매개 변수와 관련이 있습니다. 처음에 Lua 테이블에 포함 된 "id"값은 없지만 프로그램의 모든 Lua 스크립트에 해당됩니다. ID 번호/값은 초기화 프로세스의 어느 시점에서 각 Lua 테이블 (엔티티)에 할당됩니다. 나는 그것이 어디서 발생했는지 추적하려고 노력하고 있지만이 시점에서 성공을 찾지 못했습니다. – GordoFabulous

+0

Lua 엔티티가 제대로 작성되지 않았거나 어떤 이유로 가비지 수집 된 것으로 들립니다. 이 (http://www.crydev.net/wiki/index.php/Lua_API/Entity)에 따르면 모든 루아 요소는 SpawnEntity() 함수를 통해 할당 된 고유 한 식별자를 가지고 있습니다. –

답변

0

귀하의 문제는 당신이 실제로해야 할 가능성이

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

문제는 self.id을 인식 아니라고하지만 점 표기법을 사용하여 호출 할 때, 당신이 전달하는 첫 번째 매개 변수가된다이지 않는다 함수의 'self'매개 변수는 해당 함수가 테이블 함수임을 의미합니다. 두 번째 매개 변수가 실제로 찾고 있지 않습니다.

콜론 함수 표기법은 자체 변수를 암시 적으로 전달하기위한 구문 식 설탕으로 self는 테이블 (이 경우 HUD)이됩니다. 따라서 대부분의 루아 인터페이스는 매개 변수에서부터 계산되기 시작합니다. 두 번째 이야기는 실제로 세 번째입니다.

예 :

HUD = {} 

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

end 

그리고 대신 콜론의 점으로 호출 할 때 그래서, 당신이 가장 가능성으로 무엇을 기대로 file_swf를 밀어 :

HUD = {} 

function HUD:AddFSCommandListener(file, id) 

end 

이 실제로 동일합니다 자체 매개 변수.

관련 문제