cocos2d-x + Lua下場景不能使用setOnEnterCallback(func)等函數來設置回調的解決辦法

cocos2d-x + Lua還不完善,使用這幾個函數時會報錯:

node:setOnEnterCallback(func)
node:setonEnterTransitionDidFinishCallback(func)
node:setOnExitCallback(func)
node:setonExitTransitionDidStartCallback(func)

原因是lua_cocos2dx_auto.cpp里根本就沒實現:
lua_cocos2dx_auto.cpp里根本就沒實現setOnEnterCallback()等方法

這個問題的典型場景就是一個Scene不知道自己什麼時候被加載了、或者被移除了,而這個需求又是特別有用的,比如我們需要場景被顯示出來後開始播放動畫、場景被移除時停止播放動畫。解決辦法爲使用registerScriptHandler方法,像這樣:

local TestScene = class("TestScene", function()
  return cc.Scene:create()
end)

function TestScene.create()
  local scene = TestScene.new()

  scene:registerScriptHandler(function(eventType)
    if eventType == "enterTransitionFinish" then
      -- 場景被加載完成
    elseif eventType == "exitTransitionStart" then
      -- 場景即將被移除
    end
  end)

  return scene
end

不知道爲什麼cocos2d-x 3.2給回調函數傳入的eventType參數不是數字常量,而是字符串,網上其他教程裏使用的cc.NODE_ON_ENTER等判斷現在是無效的了。我對eventType是字符串的設定覺得有點不可理解,不過是數字常量也好、字符串也好,都無所謂了,能用就行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章