cocos2d の ProgressTimer を書き換えて、任意の開始点の放射状プログレス バーを実現します。

何をすべきかを説明します:

ネイティブ ProgressTimer コントロールの進行状況の開始点は、次のように (0.5, 1) のみです。

次のように、開始点として長方形の辺上の任意の点に変更したいとします。 

 まず描画のロジックについて話しましょう。

まず、始点ベクトルに基づいて一定の角度まで回転した後のベクトルを計算し、次に回転処理中に渡される長方形の頂点を計算し、始点、終点、長方形の頂点を回転中心点(図の点0)で結びます。下図) 隣接する三角形を 1 つずつ形成し、これらの三角形をテクスチャ カラーでペイントするだけです。次のように:

 

  •  変更された CCProgressTimer.h と CCProgressTimer.cpp は直接ダウンロードできるようになりました。
  • 実装プロセスで習得する必要があるいくつかの技術的なポイントを分析してみましょう。
    1. ベクトルをある角度だけ回転させた後のベクトルを求める(2次元回転行列)
    2. 光線交差アルゴリズム
    3. cocos でのOpenGL の頂点バッファ VBOインデックス バッファ EBOの使用法
    4. スプライトローカル座標系の特定の点の座標に従って、この点の頂点座標とテクスチャ座標を計算する方法

Supongo que te gusta

Origin blog.csdn.net/u012861978/article/details/131292883
Recomendado
Clasificación