2016年7月13日 星期三

0713 cocos2d-x 關閉FPS

大家都看到了左下角的FPS变成3行,多了两行数据。
1.最上面一行是指的当前场景的渲染批次。(简单理解为需要渲染多少个贴图出来)
2.中间一行是渲染每一帧需要的时间。
3.最下行就是大家熟悉的FPS。

在这个
bool AppDelegate::applicationDidFinishLaunching()
{
...

    // turn on display FPS
    pDirector->setDisplayStats(false);
...
}

要想关闭的话在AppDelegate里注销或者设为NO
// Display FSP and SPF

[director_ setDisplayStats:YES];

2016年7月6日 星期三

0708 cocos2d-x scrollview 增加觸碰事件方式 取得touch 取得偏移量

http://discuss.cocos2d-x.org/t/cocos2d-ui-scrollview-and-sprite-why-not-function-the-ontouchbegan/21790


Add touch event listener to scrollview.
scrollview->addTouchEventListener(CC_CALLBACK_2(InApp::touchEvent, this));
void InApp::touchEvent(Ref *pSender, Widget::TouchEventType type)
{
switch (type)
{
case Widget::TouchEventType::BEGAN:
    case Widget::TouchEventType::MOVED:


    case Widget::TouchEventType::ENDED:
    {
    }
        break;

    case Widget::TouchEventType::CANCELED:

    default:
        break;
}
}
//////
取得偏移量
CCLOG("BEGAN");
            auto player =dynamic_cast<Layer*>(getNode(PG_MAINSTDETIAIL, MINDETI_LAYER_HISTORY));
            int layerViewH=player->getContentSize().height;
            auto pScroll = static_cast<ui::ScrollView *>(pSender);
            
            //取得點選座標
            Point touchPoint=pScroll->getTouchBeganPosition();
            //找出那一張圖被點選
            //取得圖檔高度
            Sprite *pSpriteImage=Sprite::createWithSpriteFrameName(S_MAIN_HISTORY_BK);
            
            int imageHeight=pSpriteImage->getContentSize().height;
            
            int offsetY=pScroll->getInnerContainerPosition().y;
            //計算卷軸移動量(0 ~ -616)
            //int offsety2=pScroll->getPositionPercent().y;
            //計算整個總高度(1500)
            int scrollHeight=pScroll->getInnerContainerSize().height;
            
            //計算點選座標且換到圖檔位置
            int iHitY = touchPoint.y+(0-offsetY);
            int iOrd=iHitY/imageHeight;

            //根據編號取得產品圖檔
            auto pSpriteName = getErrStatusProductImageName(iOrd);
            auto pSprite =dynamic_cast<Sprite*>(getNode(PG_MAINSTDETIAIL, MINDETI_SPRITE_ICON));
            auto pFrame= SpriteFrameCache::getInstance()->getSpriteFrameByName(pSpriteName);

            pSprite->setSpriteFrame(pFrame);

0708 vector反向 loop


c.begin() 返回一個迭代器,它指向容器c的第一個元素
c.end() 返回一個迭代器,它指向容器c的最後一個元素的下一個位置
c.rbegin() 返回一個逆序迭代器,它指向容器c的最後一個元素
c.rend() 返回一個逆序迭代器,它指向容器c的第一個元素前面的位置
範例
for (auto pRobot = robotErrHistory.rbegin(); // binds r_iter to last element
         pRobot != robotErrHistory.rend(); // rend refers 1 before 1st element
         ++pRobot) // decrements iterator one element


cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...