读书人

CCScale9Sprite跟CCControlButton

发布时间: 2013-10-24 18:27:21 作者: rapoo

CCScale9Sprite和CCControlButton

在2dx下用到了android下的.9.png图片,下面是原图

CCScale9Sprite跟CCControlButton CCScale9Sprite跟CCControlButton

查了一下2dx里有CCScale9Sprite,直接贴上背景图,毫无问题,


这里用到了对话框的思想,点击按钮之后从底部弹出菜单,下面贴出全部代码

#include "DialogShare.h"#include "HelloWorldScene.h"enum {DialogTakePhoto,DialogPhotoAlbum,DialogCancel,};CCScene* DialogShare::scene(){CCScene *scene = CCScene::create();DialogShare *layer = DialogShare::create();scene->addChild(layer);return scene;}DialogShare::DialogShare(){}DialogShare::~DialogShare(){}bool DialogShare::init(){bool bRet = false;    do {CC_BREAK_IF(!CCLayerColor::initWithColor(ccc4(0, 0, 0, 125)));       this->initDialog();    bRet = true;} while (0);   return bRet;}void DialogShare::initDialog(){CCSize size = CCDirector::sharedDirector()->getWinSize();CCSize bgRect = CCSizeMake(size.width,size.height/3);CCScale9Sprite *background   = CCScale9Sprite::create("dialog_bg.png");background->setContentSize(bgRect);background->setPosition(ccp(bgRect.width/2,-bgRect.height/2));this->addChild(background,5);CCSize btnRect = CCSizeMake(bgRect.width/2,bgRect.height/5);CCScale9Sprite* sp1 = CCScale9Sprite::create("dialog_normal.png");sp1->setContentSize(btnRect);CCScale9Sprite* sp2 = CCScale9Sprite::create("dialog_pressed.png");sp2->setContentSize(btnRect);CCMenuItemSprite* btn_takephoto = CCMenuItemSprite::create(sp1,sp2,this,menu_selector(DialogShare::MenuItemCallback));btn_takephoto->setPosition(ccp(bgRect.width/2,bgRect.height/5*4));btn_takephoto->setTag(DialogTakePhoto);CCLabelTTF* pLabel1 = CCLabelTTF::create("拍照", "Arial", 20);pLabel1->setColor(ccc3(0, 0, 0));pLabel1->setPosition(ccp(btnRect.width/2,btnRect.height/2));btn_takephoto->addChild(pLabel1);CCScale9Sprite* sp3 = CCScale9Sprite::create("dialog_normal.png");sp3->setContentSize(btnRect);CCScale9Sprite* sp4 = CCScale9Sprite::create("dialog_pressed.png");sp4->setContentSize(btnRect);CCMenuItemSprite* btn_photoalbum = CCMenuItemSprite::create(sp3,sp4,this,menu_selector(DialogShare::MenuItemCallback));btn_photoalbum->setPosition(ccp(bgRect.width/2,bgRect.height/5*5/2));btn_photoalbum->setTag(DialogPhotoAlbum);CCLabelTTF* pLabel2 = CCLabelTTF::create("相册中选取", "Arial", 18);pLabel2->setColor(ccc3(0, 0, 0));pLabel2->setPosition(ccp(btnRect.width/2,btnRect.height/2));btn_photoalbum->addChild(pLabel2);CCScale9Sprite* sp5 = CCScale9Sprite::create("dialog_cancel_normal.png");sp5->setContentSize(btnRect);CCScale9Sprite* sp6 = CCScale9Sprite::create("dialog_pressed.png");sp6->setContentSize(btnRect);CCMenuItemSprite* btn_cancel = CCMenuItemSprite::create(sp5,sp6,this,menu_selector(DialogShare::MenuItemCallback));btn_cancel->setPosition(ccp(bgRect.width/2,bgRect.height/5));btn_cancel->setTag(DialogCancel);CCLabelTTF* pLabel3 = CCLabelTTF::create("取消", "Arial", 16);pLabel3->setColor(ccc3(0, 0, 0));pLabel3->setPosition(ccp(btnRect.width/2,btnRect.height/2));btn_cancel->addChild(pLabel3);m_pMenu = CCMenu::create(btn_takephoto,btn_photoalbum,btn_cancel, NULL);m_pMenu->setPosition(CCPointZero);background->addChild(m_pMenu);background->runAction(CCEaseExponentialOut::create(CCMoveTo::create(0.5f,ccp(bgRect.width/2,bgRect.height/2))));}void DialogShare::onEnter(){CCLayerColor::onEnter();CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,kCCMenuHandlerPriority-1, true);}void DialogShare::onExit(){CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);CCLayerColor::onExit();}bool DialogShare::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){m_bTouchedMenu = m_pMenu->ccTouchBegan(pTouch, pEvent);   return true;}void DialogShare::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){if (m_bTouchedMenu) {m_pMenu->ccTouchMoved(pTouch, pEvent);}}void DialogShare::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){if (m_bTouchedMenu) {m_pMenu->ccTouchEnded(pTouch, pEvent);m_bTouchedMenu = false;}}void DialogShare::ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){if (m_bTouchedMenu) {m_pMenu->ccTouchEnded(pTouch, pEvent);m_bTouchedMenu = false;}}void DialogShare::MenuItemCallback(cocos2d::CCObject *pSender){CCMenuItemImage* button=(CCMenuItemImage*)pSender;switch (button->getTag()){case DialogTakePhoto:CCLog("DialogTakePhoto++++++");break;case DialogPhotoAlbum:CCLog("DialogPhotoAlbum++++++");break;case DialogCancel:CCLog("DialogCancel++++++");this->removeFromParentAndCleanup(true);break;}}







读书人网 >移动开发

热点推荐