gideros 게임에서 이벤트가 발송되었습니다. 어떤 메신저의 확실하지이라고 나는 내가 다음과 같이 편지 클래스가 0Gideros 이벤트가 트리거 된 후 null로 표시됩니다.
의 길이가있는 테이블 반환 (객체가 트리거) 이벤트를 액세스하려고하면
GridLetter = gideros.class(Sprite)
function GridLetter:init(letter)
self.image = Bitmap.new(Texture.new("GridLetters/"..letter.."Grid.png"))
self.image:setAnchorPoint(0.5, 0.5)
self.focus = false
self:updateVisualState(true)
self:addEventListener(Event.MOUSE_DOWN, self.onMouseDown, self)
end
function GridLetter:onMouseDown(event)
if self:hitTestPoint(event.x, event.y) then
self.focus = true
self:dispatchEvent(Event.new("GridLetterDown"))
event:stopPropagation()
end
end
function GridLetter:updateVisualState(state)
if state then
self:addChild(self.image)
end
end
코드를
grid = Core.class(Sprite)
local letterArr = {"a","b","c","d","e","f","g","h","u","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
local gridboard = {{},{},{},{}}
local letterBoxArr = {{},{},{},{}}
local letterBox
function grid:init(params)
local widthOfSingle = (application:getContentWidth()/4)
for rowCount = 1,4 do
for colCount = 1,4 do
rand = math.random(1, 26)
gridboard[rowCount][colCount] = letterArr[rand]
end
end
for rowCount = 1,4 do
for colCount = 1,4 do
letterBox = GridLetter.new(gridboard[rowCount][colCount])
letterBoxArr[rowCount][colCount] = {letterBoxItem=letterBox}
letterBoxArr[rowCount][colCount].letterBoxItem:setPosition(((widthOfSingle * colCount) - (widthOfSingle/2)), 100 * rowCount)
letterBoxArr[rowCount][colCount].letterBoxItem.letter = gridboard[rowCount][colCount];
letterBoxArr[rowCount][colCount].letterBoxItem:addEventListener("GridLetterDown", LetterDown, self)
self:addChild(letterBoxArr[rowCount][colCount].letterBoxItem)
end
end
end
function LetterDown(event)
print(event.target.letter)
end
내가 이러한 이미지 중 하나를 클릭
는 이벤트가 해고되고 코드는 LetterDown 이벤트에서 실행 않지만, 이벤트 매개 변수에 액세스하려고 할 때, 그것은 반환 : 즉,이 클래스는 다음과 같습니다 구현grid.lua:32: attempt to index field 'target' (a nil value)
stack traceback:
grid.lua:32: in function <grid.lua:31>
GridLetter.lua:15: in function <GridLetter.lua:12>
어떤 아이디어 나 해결책이 있습니까?
하면 교체 할 때 :
print(event.target.letter)
그것은 닐을 인쇄
print(event.x)
한다.
미리 도움을 주셔서 감사합니다.
감사합니다, 워렌이 응답하지 않습니다
그래서 self.letter = letter를 init 메소드에 추가했습니다. 그러나 여전히 데이터가 없습니다. nil을 리턴합니다. 이상한 것은 x와 y 좌표조차도 nil을 반환한다는 것입니다. 내가 사건들을 어떻게 연관 짓고 있는지 아마 상관 없지? 다른 방법으로 이벤트를 호출해야합니까, 아니면이를 수용 할 수 있습니까? – EpicJoker
그래, 문서를 조금 봤어. 문제는 다음과 같습니다 :'self : dispatchEvent (Event.new ("GridLetterDown"))'이벤트에 전달 된 데이터가 없습니다. 'local ev = Event.new ("GridLetterDown"); ev.letter = 편지; ev.x = event.x, ev.y = event.y; ev.target = self; self : dispatchEvent (ev)' Gideros에 익숙하지 않기 때문에 이것이 제대로 작동해야한다고 생각합니다. :) – Advert
감사합니다. 오늘 귀하의 솔루션을 살펴보고 작동 여부를 알려 드리겠습니다. 지금까지 친절한 도움을 주셔서 감사합니다. – EpicJoker