多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 進階的PageView――封裝ScrollView 實現自動調整位置,縮放,透明度實例

進階的PageView――封裝ScrollView 實現自動調整位置,縮放,透明度實例

來源:程序員人生   發布時間:2014-12-16 09:02:02 閱讀次數:3626次

上篇介紹了,簡單封裝PageView 的基本實現。XKPageView基本實現了,PageView 的功能,便可能用來實現上篇說的使用系統自帶PageView實現不了的功能了(有點繞~)
一樣地,我們先來看看使用效果圖:

         

進階使用XKPageView,主要用到了我們上篇說到的XKPageViewDelegate 的PageViewDidScroll函數,監聽轉動事件。 轉動進程中計算金幣縮放大小,還有 透明度設置。然后新增加了這個回調函數

        std::function<void(XKPageView *)> adjustCallback  

(學過ios的同學就不能理解了,其實就是 block啦,這東西很好用哈。) adjustCallback的作用就是當PageView自動調劑的時候履行的代碼塊,由于我們使用的是系統的setContentOffsetInDuration,所以很難再在里面同步履行動作了。所以就使用這類方法,效果還不錯。
這里就貼1下,實現滑動和自動調劑位置時改變大小和透明度的代碼吧。
自動調理時的代碼

 

<span style="font-size:14px;"> pageView -> adjustCallback = [](XKPageView *pageView){ FiniteTimeAction *fadeIn = FadeTo::create(0.15, 255); FiniteTimeAction *fadeOut = FadeTo::create(0.15, 255 * 0.3); FiniteTimeAction *scaleToBig = ScaleTo::create(0.15, 1.5f); FiniteTimeAction *scaleToSmall = ScaleTo::create(0.15, 1.0f); Spawn *spawnIn = Spawn::createWithTwoActions(fadeIn, scaleToBig); Spawn *spawnOut = Spawn::createWithTwoActions(fadeOut, scaleToSmall); int current = pageView -> getCurrentIndex(); auto sprite = (Sprite*) pageView -> getPageAtIndex(current); sprite -> runAction(spawnIn); sprite = (Sprite *)pageView -> getPageAtIndex(current - 1); if (sprite !=NULL){ sprite -> runAction(spawnOut); } sprite = (Sprite *)pageView -> getPageAtIndex(current + 1); if (sprite !=NULL){ sprite -> runAction(spawnOut -> clone()); } }; </span>

滑動時期碼

 

<span style="font-size:14px;"> void HelloWorld::pageViewDidScroll(XKPageView *pageView) { //監聽轉動時間,可以再這里寫轉動時候要添加的代碼,比如縮放~ Size visibleSize = Director::getInstance() -> getVisibleSize(); float midX = visibleSize.width / 2; float offsetX = pageView -> getContentOffset().x; float tmp = COIN_WIDTH / 2.0f; float scale = 1.5; scale = scale - 1; for (int i = 0; i < COIN_COUNT; i++) { auto sprite = (Sprite *) pageView -> getPageAtIndex(i); float positionX = sprite -> getPositionX(); //轉換成相對屏幕坐標 float endX = positionX + offsetX + midX - tmp; if (0 < endX && endX <= midX) { //midX左側 float x = endX / midX * scale + 1; sprite -> setScale(x); x = (endX / midX * 0.7 + 0.3) * 255; sprite -> setOpacity(x); }else if(endX > midX && endX < visibleSize.width){ //midX右側 float tmp2 = endX - midX; tmp2 = midX - tmp2; float x = tmp2 / midX * scale + 1; sprite -> setScale(x); x = (tmp2 / midX * 0.7 + 0.3) * 255; sprite -> setOpacity(x); }else { sprite -> setScale(1.0f); sprite -> setOpacity(255 * 0.3); } } }</span>

這次就不放到CSDN上了,直接放在github上,需要的同學可以去下載...(需要翻墻)
由于對底層技術了解較少,避免不了會有bug,如果有問題,請1定要告知我~


我的個人博客:helkyle.tk
我的CSDN博客: http://blog.csdn.net/joueu 

(以后寫的東西都會優先推到個人博客哦~)
轉載請注明出處為helkyle.tk,謝謝~

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一线天 | 在线播放精品 | 欧美激情久久久久久久久 | 图片区小说校园综合 | 一区二区三区四区视频在线观看 | 欧美亚洲国产精品久久 | 免费澳门一级毛片 | 中文精品视频一区二区在线观看 | 亚洲成人偷拍 | 羞羞影院男女午夜爽爽影视 | 亚洲成人小视频 | 免费又黄又爽又猛大片午夜 | 欧美最刺激好看的一级毛片 | 欧美亚洲另类久久综合 | 午夜视频网| 欧美激情第二页 | 亚洲区视频 | 最近高清中文在线字幕在线观看 | 日韩精品免费一级视频 | 成人a毛片手机免费播放 | 日韩中文字幕视频在线观看 | 欧美xxxx成人免费网站 | 亚洲国产情侣偷自在线二页 | 性做久久久久久久久浪潮 | 日本午夜视频在线观看 | 羞羞视频在线 | 亚洲天堂第一 | 色综合久久久久久久久五月 | 久久久精品一级二级三级 | 午夜dj影视大全视频 | 亚洲aⅴ天堂 | 小说区 综合区 都市激情 | 国产成人啪精品午夜小说 | 日韩欧美专区 | 色人阁久久 | 久久精品国产6699国产精 | 欧美精品在线一区 | 亚洲女人天堂网 | 精品国产理论在线观看不卡 | 亚洲 校园 春色 另类 激情 | 国产一区二区在线 |播放 |