LoginSignup
0
0

More than 5 years have passed since last update.

メニューを作る基本(Cocos Code IDE, Lua言語)

Last updated at Posted at 2014-09-15

Cocos Code IDEを使ってLua言語で、メニューを作る基本です。

実行環境、IDE Cocos2d-xバージョン 言語
Cocos Code IDE Mac OS X 1.0.0-RC2 Cocos2d-x V3.2 Lua言語

サンプルコード

プロジェクトを新規作成で作成します。(FileメニューのNew->Cocos Lua Project...から作成できます。)
プロジェクト名は適当につけてください。画面は縦画面(portrait)を指定します。

main.luaファイルを修正します。

main.lua/26行目
cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(320, 480, 0) -- 縦画面用に(480, 320, 0)から(320, 480, 0)に変更
main.lua/31行目
--gameScene:playBgMusic() --使わないのでコメントアウト

GameScene.luaを書き換えます。

GameScene.lua

require "Cocos2d"
require "Cocos2dConstants"

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

function GameScene.create()
    local scene = GameScene.new()
    local visibleSize = cc.Director:getInstance():getVisibleSize()

    -- メニュー選択時に呼ばれるコールバック関数
    local function menuCallback(tag)
        print(string.format("メニュー%dが押されました", tag))
    end

    -- 1つ目のメニュー項目
    local menuItem1 = cc.MenuItemImage:create("menu1.png", "menu1_on.png")
    menuItem1:setPosition(0, 30)
    menuItem1:setTag(1)
    menuItem1:registerScriptTapHandler(menuCallback)

    -- 2つ目のメニュー項目
    local menuItem2 = cc.MenuItemImage:create("menu2.png", "menu2_on.png")
    menuItem2:setPosition(0, -30)
    menuItem2:setTag(2)
    menuItem2:registerScriptTapHandler(menuCallback)

    -- メニュー項目からメニューを作成してシーンへ追加
    local menu = cc.Menu:create(menuItem1, menuItem2)
    menu:setPosition(visibleSize.width/2, visibleSize.height/2)
    scene:addChild(menu)

    return scene
end

return GameScene

メニュー用の画像に、menu1.png、menu1_on.png、menu2.png、menu2_on.pngを用意してresディレクトリに追加します。
menu1.pngmenu1.png menu1_on.pngmenu1_on.png
menu2.pngmenu2.png menu2_on.pngmenu2_on.png

実行すると画面にメニューが表示されます。
ss.png

解説

メニュー選択時に呼ばれるコールバック関数を準備する

関数名は何でもかまいません。tagには選択されたメニューのタグ番号が入って呼ばれます。
この関数の中にメニューが呼ばれた時の処理を実装します。

-- メニュー選択時に呼ばれるコールバック関数
local function menuCallback(tag)
    print(string.format("メニュー%dが押されました", tag))
end

(修正:functionの前にlocalが抜けていました。)

メニュー項目を作成する

画像からメニュー項目を作成しています。createの1番目の引数に通常時の画像、2番めに押された時の画像を設定します。
次に、メニュー項目の位置とタグを設定しています。
registerScriptTapHandlerメソッドでコールバック関数を指定しています。

local menuItem1 = cc.MenuItemImage:create("menu1.png", "menu1_on.png")
menuItem1:setPosition(0, 30)
menuItem1:setTag(1)
menuItem1:registerScriptTapHandler(menuCallback)

メニュー項目からメニューを作成する

Menuクラスのcreateメソッドでメニュー項目(menuItem1, menuItem2)を指定してメニューを作成しています。
その後、メニューの表示位置を指定して、シーンへ追加しています。

local menu = cc.Menu:create(menuItem1, menuItem2)
menu:setPosition(visibleSize.width/2, visibleSize.height/2)
scene:addChild(menu)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0