0

こんにちは、cocos2d-x を使用してアプリを作成しています。アプリにさらなる機能を提供するために、私は現在 Lua を使用しています。これは、新しいシーンを正常に生成する私のコードです:

関数 main()

local visibleSize = CCDirector:sharedDirector():getVisibleSize() local origin = CCDirector:sharedDirector():getVisibleOrigin() local cclog = function(...) print(string.format(...)) end -- create layer local function createLuaSceneLayer() local luaSceneLayer = CCLayer:create() local function menuCallbackBack() CCDirector:sharedDirector():popScene() end local size = CCDirector:sharedDirector():getWinSize(); local bg = CCLayerColor:create(ccc4(255,255,255,255)) luaSceneLayer:addChild(bg) local backButton = CCMenuItemImage:create("arrow_left.png", "arrow_left.png") backButton:setPosition(ccp(20, CCDirector:sharedDirector():getWinSize().height - 20) ) backButton:registerScriptTapHandler(menuCallbackBack) local menu = CCMenu:createWithItem(backButton) menu:setPosition(ccp(0, 0)) luaSceneLayer:addChild(menu,3) local textLabel = CCLabelTTF:create("I am a Lua generated Label", "Thonburi", 20) textLabel:setPosition(180 ,size.height -20) textLabel:setColor(ccc3(0,0,0)) luaSceneLayer:addChild(textLabel) local taskLabel = CCLabelTTF:create("Enter two numbers in the EditBoxes Below", "Thonburi", 20) taskLabel:setPosition(160,size.height /7 * 6) taskLabel:setColor(ccc3(0,0,0)) luaSceneLayer:addChild(taskLabel) local mySprite = CCScale9Sprite:create("green_edit.png") local textField1 = CCEditBox:create(CCSizeMake(200, 40), mySprite) textField1:setPosition(40, 40) textField1:setFontColor(ccBLACK); textField1:setText(""); luaSceneLayer:addChild(textField1) return luaSceneLayer end -- run local luaScene = CCScene:create() luaScene:addChild(createLuaSceneLayer()) CCDirector:sharedDirector():pushScene(luaScene)

終わり

xpcall(main, G__TRACKBACK )

ここで、CCScale9Sprite を必要とする CCEditBox を追加したいと思います。Lua ファイルを開くとすぐにアプリがクラッシュし、次のエラー メッセージが表示されます。

パニック: Lua API の呼び出しで保護されていないエラーが発生しました (...3-AEC8-DC161CC38F63/SalesOrderApp.app/helloLocal.lua:47: グローバル 'CCScale9Sprite' (nil 値) のインデックスを作成しようとしています)

CCScale9Sprite を Lua と組み合わせて使用​​できないのはなぜですか?

4

1 に答える 1

1

このエラー メッセージは、Lua が CCScale9Sprite という名前のオブジェクトを認識していないことを示しています。

CCScale9Sprite は cocos2d の一部ではなく、cocos2d-x にも含まれていないことがわかっています。そのため、cocos2d-x の Lua 実装では既知のオブジェクトとして登録できません。Lua 側で使用する前に、cocos2d-x の tolua++ バインド メカニズムを使用して CCScale9Sprite を登録 (Lua にバインド) する必要があります。追加するカスタム クラスについても同様です。

于 2013-02-09T23:31:44.447 に答える