1. 程式人生 > >cocos2dx 實現gallery (一)

cocos2dx 實現gallery (一)

        需要實現一個gallery 。 

        首先,最容易想到的,自然是讓美工,擺個位置,大小,然後程式記錄下來,每次移動的時候,後面一個節點移動到前一個節點的位置,然後再設定成前一個節點的scale和zOrder。

        這麼做,可以解決一些問題。比如這個。這樣的gallery,只能一次動一格,因為他是直接把節點設定到前一個節點的位置去。如果你想要圖隨手走,就比較蛋疼了。因為每個節點直接的間距不一樣,第一個個節點移動一半,第二個節點該移動多少?後面的節點怎麼控制,怎麼在2個E點相互遮擋的時候正確的設定zorder?怎麼讓這個過程看起來很真實,不突兀?要完成這個要求,需要控制的變數太多,而且不直觀,也不好理清邏輯。

        再想上面的問題,不好處理的地方是因為每個節點直接的距離不同,不方便處理中間狀態。如果把每個節點的距離處理成一樣呢?這樣確實比較 計算和處理,但是最後出來的效果可能和美工期望的效果不一樣的問題。

        再沿著上面,如果有一個通用的公式,來處理這一系列問題,就簡單的多了。

        然後,祭出終極方案 —— 用3D模擬,(雖然我是一個一直做2D完全不懂3D的渣渣,但是尼瑪空間幾何是高中的課程啊,我覺得簡單的應該還是問題不大的。。。)

        先看我們要實現的效果,應該是在3D空間內,有一個圓,圓周放置了很多矩形,我們從某一個點去看這些矩形

        正面看上去應該是這樣的

        

從頂面向下俯視應該是這樣的,紅色的表示是我們眼睛的方向

        

        從側面看應該是這樣的

        

        如果沒記錯的話,這個圖的表示方法是工程製圖裡面的三檢視,因為我實在是畫不出來3D的啊。。。。

        先把需求搞清楚了,然後我們來實現這個東西。

相關推薦

cocos2dx 實現gallery

        需要實現一個gallery 。          首先,最容易想到的,自然是讓美工,擺個位置,大小,然後程式記錄下來,每次移動的時候,後面一個節點移動到前一個節點的位置,然後再設定成前一個節點的scale和zOrder。         這麼做,可以解決一

cocos2dx 實現gallery

        boss還想實現一個自動滾的效果,就是我手指一下快速的劃過,不是慢慢拖動,然後這個滾滾會自己滾一段時間,再慢慢停下。         首先需要判斷這個東西,是劃過還是拖動。直接取按下的時間和鬆開的時間的差值,小於eps就算是劃過,按自動滾處理,不然就按之前

C++ 實現反射

反射,就是根據一個類名,即可根據類名獲取類資訊,建立新物件。反射在很多語言都天然支援,然而不包括 C++,但我們肯定會經常遇到這種根據類名生成物件的場景,這就需要我們自己動手來實現了。反正 C++ 這麼強大,一定沒有問題 :) version 1 我們略做思考,就可以想到一種最簡

JDK9 ConcurrentHashMap實現原理

文章目錄 JDK9 ConcurrentHashMap實現原理(一) 資料結構 私有屬性 靜態屬性 相關節點 構造器 Hash值計算 新增元素 初始化陣列

OpenCV下車牌定位演算法實現程式碼

             分類:            影象處理

Redisson 分散式鎖實現分析

  設計分散式鎖要注意的問題 互斥 分散式系統中執行著多個節點,必須確保在同一時刻只能有一個節點的一個執行緒獲得鎖,這是最基本的一點。 死鎖 分散式系統中,可能產生死鎖的情況要相對複雜一些。分散式系統是處在複雜網路環境中的,當一個節點獲取到鎖,如果它在釋放鎖之前掛掉了,

深入探究immutable.js的實現機制

Immutable.js 採用了持久化資料結構和結構共享,保證每一個物件都是不可變的,任何新增、修改、刪除等操作都會生成一個新的物件,且通過結構共享等方式大幅提高效能。網上已經有很多文章簡單介紹了 Immutable.js 的原理,但基本都是淺嘗輒止,我也是搜了很久

java併發機制的底層實現原理:volatile深入分析

     java程式碼最終會被類載入器載入到JVM中,然後轉化為彙編指令在CPU上執行。java中所使用的併發機制依賴於JVM的實現和CPU的指令。 1.volatile的應用 volatile是一個輕量級的synchronize,它保證了共享變數的可見性,確保了所有執

Rxjava2.x 原始碼分析,以及手動實現Rxjava

這兩年Rxjava火的一塌糊塗,不會點Rxjava+Okhttp+Retrofit+MVP+Dagger2架構都不好意思說自己混Android的。Rxjava 到底是什麼和Rxjava到底怎麼用,這裡就不講了,網上太多了,具體可以參考 這位大佬 和扔物線的。  Rxjava

【iOS】圖表實現-Charts

前幾天把AAChartsKit的使用簡單寫了寫,官方使用說明已經寫的很詳細了。我也就不多說了,今天就講講Charts的使用。 0.簡介 近期專案需要使用到折線圖這樣的圖表功能,因此接觸到了Charts這個框架,不得不說這個圖表框架很強大,但是在GitHub上Charts的介紹也比較簡單的介紹(直說了和MP

嘗試模擬實現struts2

由於在另一篇文章中已經分析過Struts2的執行流程,所以直接開始嘗試。 宣告:只是簡單實現過程,沒有使用代理。 首先:因為struts2會當使用者訪問action時候加入一個過濾器,將使用者請求攔下來。使用者請求路徑"./action/StudentInfo" 所以我們也在web.xm

嘗試模擬實現RMI

關於RMI的基礎理解在我之前的文章中有所介紹。點我 這次是根據RMI的基礎理解從而想到嘗試模擬實現RMI。 大體思路: 我們的目標是建立RpcServer以及RpcClient後,從RpcClient中得到相應介面或類的代理物件,並且執行介面中的方法。 而這的執行是通過代理機

嘗試模擬實現AOP

大體思路: 除了模擬實現IOC準備的東西外,還需要準備一套有關攔截器的類以及相關注解; 包括類InterceptorFactory、InterceptorScanner、,註解After、Before、ThorwException、Aspect; 一個描述攔截器的類Interc

RBAC許可權管理系統實現思路

RBAC(Role-Based Access Contro) 是基於角色的許可權訪問控制,系統根據登入使用者的角色不同,從而給予不同的系統訪問許可權,角色的許可權隨角色創立時進行分配。 首先,許可權控制很多系統中都需要,但是不同的系統對於許可權的敏感程度不同,

用DirectX實現魔方

關於魔方 魔方英文名字叫做Rubik's Cube,是由匈牙利建築學教授和雕塑家Ernő Rubik於1974年發明,最初叫做Magic Cube(這大概也是中文名字的來歷吧),1980年Ideal Toys公司開始銷售此玩具,並將名字改為Rubik's Cube。 魔方在80年代最為風靡,至今未衰。截至

模仿NGUI實現SoftClip

用過NGUI的童鞋都知道UIPanel可以設定一個矩形的Clip區域,它下轄的UIWidget都只能在Clip區域內顯示。今天我就模仿UIPanel實現類似的Clip功能,讓一個3D面片只能在我所指定的矩形區域內顯示。相信看完這篇文章,UIPanel的Clip原理也就不再神祕

【Spring原始碼--AOP的實現AopProxy代理物件的建立

public Object getProxy(ClassLoader classLoader) { if (logger.isDebugEnabled()) { logger.debug("Creating CGLIB2 proxy: target source is " + this.a

必須知道的八大種排序演算法【java實現 氣泡排序、快速排序

氣泡排序   氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。   氣泡排序的示例:   氣

C/C++:各種基本演算法實現小結—— 單鏈表

各種基本演算法實現小結(一)—— 單鏈表 (均已測試通過) ============================================================ 單鏈表(測試通過) 測試環境: Win-TC

Android--推送機制實現原理

簡介 Pull模式  傳統的移動端APP從伺服器獲取資訊的途徑是通過主動向伺服器發起Request請求,通常稱這種模式為Pull模式,這種模式移動端與伺服器端維持的是短連線,也就是需要時由移動端主動