狠狠撸
Submit Search
Cocos2dx メニューについて
?
Download as DOCX, PDF
?
0 likes
?
782 views
Chu Chu
Follow
1 of 5
Download now
Download to read offline
More Related Content
Cocos2dx メニューについて
1.
メニューについて I. メニューの概要 このテップは Cocos2dx
でボタンを作成について紹介します。ボタンを作成する為に Cocos2dx の既にメニューアイテムを使う方法を投稿します。メニューアイテムは主に三つの種類がありま す。 MenuItemLabel はラベルをボタンにするものです。 MenuItemImage はイメージ(画像)をボタンにするものです。 MenuItemSprite はスプライトをボタンにするものです。 II. メニューを作成方法 まずは MenuItem の種類を紹介する前に C++言語の auto キーワードを話します。 Visual C++ 2010 より前のバージョンでは、auto キーワードは、ローカルな寿命クラスの変数、 つまりローカルの有効期間を持つ変数を宣言します。 Visual C++ 2010 以降、 auto キーワー ドは、その宣言の初期化式から変数の型を推測し、変数を宣言します。 それで以下にメニューを作成するについて紹介します。 1. イ メージ(画像)からメニューを作成する イメージからメニューを作成する為に Cocos2dx の 3.x バーションでは MenuItemImageクラス を利用します。イメージは「非常時の画像」と「押した時の画像」の二つ状態を利用します。 //画面のサイズを取得する Size winSize = Director::getInstance()->getWinSize(); //ボタン1を生成する auto mItem1 = MenuItemImage::create( "menu_image1.png" , // 1引数は非常時の画像 "menu_image1_normal, // 2 引数は押した時の画像 CC_CALLBACK_0(HelloWorld::menuAction, this));// 3 引数は Cocos2dx の既にコールバック 関数 //ボタン 2 を生成する auto mItem2 = MenuItemImage::create( "menu_mage1.png", // 1引数は非常時の画像 "menu_mage1_over.png", // 2 引数は押した時の画像 //3 引数は自分でコールバック関数を設定する [](Ref* sender){ //ボタンのップイベントを呼び出す
2.
// ロッグ ccos2d::log(“タップされました“); }); //メニューでメニューアイテム配置を設定する mItem1->setPosition(Point(winSize.width/2-200,winSize.height/2)); mItem2->setPosition(Point(winSize.width/2+200,winSize.height/2)); //メニューを作成 auto _menu
= Menu::create(mItem1,mItem2,NULL); //メニュー配置を設定する _menu->setPosition(Point::ZERO); // Vec2::ZERO = Point::ZERO = Vec2(0,0) = Point(0,0) this->addChild(_menu); タップすると「タンが押されました」のメッセージが出るようにします。 void HelloWorld::menuAction(Ref* pSender) { log("タップされました。"); } これは結果です。
3.
2. テ キストからメニューを作成する 画像だけではなくテキストもボタンを作成できます。ラベルからメニューを作成する為に Cocos2dx
の 3.x バーションでは MenuItemLabel クラスを利用します。 //画面サイズを取得 Size s = Director::getInstance()->getVisibleSize(); //メニューアイテムラベルの作成 auto pLabel = LabelTTF::create("Button", "Arial", 50); auto pBtnItem = MenuItemLabel::create( pLabel, CC_CALLBACK_1(HelloWorld::myCallback, this)); //メニューの作成 pMenu の中に pBtnItem を入れる Menu* pMenu = Menu::create(pBtnItem, NULL); //pMenu を画面中央に配置 pMenu->setPosition(Vec2(s.width*.5, s.height*.5)); this->addChild(pMenu); タップすると「タンが押されました」のメッセージが出るようにします。 void HelloWorld::myCallback(Ref* pSender) { log("タップされました。"); } これは結果です。
4.
3. ス プライトからメニューを作成する 二つのスプライトを組み合わせてボタンを作成します。一つ目は半透明(タップ前)、もう一つ は不透明(タップ後)にしてみます。 //画面サイズを取得 Size
s = Director::getInstance()->getVisibleSize(); //タップ前のスプライト auto pNormalSprite = Sprite::create("1.png"); pNormalSprite->setOpacity(100); //タップ時のスプライト auto pSelectedSprite = Sprite::create("1.png"); //メニューアイテムの作成 auto pBtnItem = MenuItemSprite::create(pNormalSprite, pSelectedSprite, CC_CALLBACK_1(HelloWorld::myCallback, this)); //メニューの作成 pMenu の中に pBtnItem を入れる auto pMenu = Menu::create(pBtnItem, NULL); //pMenu を画面中央に配置 pMenu->setPosition(Vec2(s.width*.5, s.height*.5)); this->addChild(pMenu); タップするとコールバック関数を呼び出します。 void HelloWorld::myCallback(Ref* pSender) { log("タップされました。"); } 注 意 :auto キーワードを使わない変数の場合はヘッダファイルでグローバルな変数として宣言 します。関数もヘッダに宣言します。 pivate: // 変数の宣言 MenuItemImage* mItem1; MenuItemImage* mItem2; Menu* _menu;
5.
// 関数の宣言 void HelloWorld::menuAction(Ref*
pSender); void HelloWorld::myCallback(Ref* pSender);
Download