2017-03-21 7 views
0

私はcocos2dが新しく、メニューを作ろうとしています。私はここMenuItemImageを作成しました:coocs2dのMenuItemImageに輝くボーダーエフェクトを追加するには?

mSetting = MenuItemImage::create("setting.png", "setting_selected.png"); 

は今、私は退屈な静的setting_selected.png画像の代わりに、それを境に熱烈な効果を追加する方法を探しています。

(たとえば、メニュー画像の明るい青色の光沢のある境界線は、1:00https://youtu.be/PJSlvhDbB4I?t=1mにチェックしてください)。 ご注意とヘルプは非常に高く評価される:D

更新を:私は、正方形の形状でスプライトを使用すると、正確に、それはそれの境界線のように見えるようにするために、メニュー項目に適合するという考えを持っています。次に、アニメーション(色を変える)を行い、輝くエフェクトがビデオの中でどのようにしているかを表示します。それは仕事をすることが可能で、簡単で効果的ですか?

答えて

1

MenuItemImageではなくMenuItemSpriteを使用し、メニュー項目をクリックするとアクションを実行できます。 (それはあなたが望むものを正確ではありませんが、あなたを助けるかもしれない)Cocos2d-x actions

私が更新し、あなたが必要なものと類似している例を記述します。 Cocos2d-x: simple button effect

あなたが現在以上のアクションを見つける必要があります。このリンクを見てください。 EditorSceneという名前のシーンがあります。 EditorScene.hで

.... 
virtual void onMenuItemSelected(Ref *item); 
MenuItemSprite* createMenuButton(const char* img); 
MenuItemSprite* btEnter; 
void actionEnter(); 
.... 

そしてEditorScene.cpp中:

bool EditorScene::init() 
{ 
    ... 
    btEnter = createMenuButton("button_normal.png"); 
    auto menu = Menu::create(btEnter, nullptr); 
    menu->setPosition(400,400); 
    addChild(menu); 
} 

MenuItemSprite* EditorScene::createMenuButton(const char* img) 
{ 
    Sprite* spr = Sprite::create(img); 
    auto light = Sprite::create("a2.png"); 
    light->setTag(1); 
    light->setPosition(0, 
        spr->getBoundingBox().size.height); 
    light->setOpacity(0); 

    if(! spr) 
    { 
     return NULL; 
    } 

    MenuItemSprite* item = MenuItemSprite::create(spr, 
               NULL, NULL, 
               CC_CALLBACK_1(EditorScene::onMenuItemSelected, this)); 
    item->addChild(light); 

    return item; 
} 

void EditorScene::onMenuItemSelected(Ref* item) { 
    Sprite* btm = (Sprite*) item; 
    Sprite* light = (Sprite*)btm->getChildByTag(1); 
    if(item == btEnter){ 
     float w = btm->getBoundingBox().size.width; 
     float h = btm->getBoundingBox().size.height; 
     std::function<void(void)> f1 = std::bind(&EditorScene::actionEnter, this); 
     light->runAction(
      Sequence::create(
        FadeIn::create(0), 
        MoveBy::create(0.09f, Vec2(w, 0)), 
        MoveBy::create(0.045f, Vec2(0, -h)), 
        MoveBy::create(0.09f, Vec2(-w, 0)), 
        MoveBy::create(0.045f, Vec2(0, h)), 
        FadeOut::create(0), 
        CallFunc::create(f1 ), 
        NULL)); 
    } 
} 

void EditorScene::actionEnter() 
{ 
    log("Do something!"); 
} 

このコードは、クリックすることで、ボタンの境界に周回小さなドットが表示されていることを、メニュー項目を作成します。 A simple effect

メニュー項目の背景をアニメーション化するには、Animation :: createWithSpriteFramesを使用できます。

関連する問題