切換遊戲場景特效的Android原始碼

2021-06-20 11:06:56 字數 3844 閱讀 7514

1.android

原始碼——交叉相合動畫

左右兩邊分別以若干個矩形以交替相合的形式合併 控制螢幕關閉

通過兩個for

迴圈 1 3 5 7 9 

繪製螢幕左方矩形 

2 4 6 8 10 

繪製螢幕右放矩形 在遊戲更新中計算矩形移動的座標 然後左邊的矩形 分別向右延伸 右邊的矩形分別向左延伸 這樣就可以實現矩形的交叉合併動畫。 /

、**交錯的實現矩形相交

**/

int count = (mscreenheight / random_type_2_range);

for (int i = 0; i < count; i += 2)

for (int i = 1; i < count; i += 2)

繪製矩形的方法/、

** * 繪製乙個矩形

* @param canvas

* @param color

* @param x

* @param y

* @param w

* @param h */

public void drawfillrect(canvas canvas, int color, int x, int y, int w, int h) 

2.android原始碼——扇形合併動畫

以扇形的轉圈的形式來控制螢幕關閉

在遊戲更新中一直更新扇形繪製的區域 根據繪製區域的引數將扇形繪製出來 實現扇形合併的動畫效果。/、

/rectf

為扇形繪製區域 為了讓扇形完全填充螢幕所以將它的區域擴大了

100畫素

rectf rectf = new rectf(- random_type_3_range, - random_type_3_range,mscreenwidth+random_type_3_range,mscreenheight + random_type_3_range); //

將扇形繪製出來

drawfillcircle(mcanvas, color.black,rectf,0,s_effrange,true);

繪製扇形的方法

/**

* 繪製乙個扇形

* @param canvas

* @param color

* @param oval

* @param startangle

* @param sweepangle

* @param usecenter */

public void drawfillcircle(canvas canvas, int color, rectf oval, int startangle, int sweepangle, boolean usecenter) 

3.android原始碼——百葉窗合併動畫

螢幕中若干的矩形慢慢放大的形式關閉遊戲螢幕

在螢幕中用雙for

迴圈繪製出若干的矩形 在遊戲更新中更新矩形繪製的寬與高 直到將螢幕完全填充。這樣就可以實現遊戲百葉窗合併動畫的效果啦。

/**百葉窗效果利用雙

for迴圈 修改每個矩形繪製的寬度

**/

for (int i = 0; i <= (mscreenwidth / random_type_0_range); i++)  }

4.android原始碼——滾動水紋矩形合併動畫

利用矩形的滾動實現水紋向右關閉遊戲螢幕效果。

大家仔細觀察上圖這個動畫效果 其實就是4

個矩形 從右到左 前

3個矩形的大小是固定的中間的間隙也是固定的 最左邊的矩形才為真正關閉螢幕的矩形 更新遊戲介面時 

4個矩形同時向右方移動 前

3個只移動座標 最後乙個才是真正填充的矩形。這樣就可以實現滾動的水紋的效果了。

/**水紋效果其實繪製了

4個矩形 中間留一些縫隙 

**/

drawfillrect(mcanvas, color.black, 0, 0, s_effrange, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space1, 0, random_type_1_range1, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space2, 0, random_type_1_range2, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space3, 0, random_type_1_range3, mscreenheight);

這樣4個動畫效果已經介紹完畢, 下面我將一些重要的**貼上。

根據特效的狀態 進行繪製特效

/**繪製特效

**/

public void rendereffect()  }

break;

case random_effect_type_shadow:

/**水紋效果其實繪製了

4個矩形 中間留一些縫隙 

**/

drawfillrect(mcanvas, color.black, 0, 0, s_effrange, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space1, 0, random_type_1_range1, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space2, 0, random_type_1_range2, mscreenheight);

drawfillrect(mcanvas, color.black, s_effrange + random_type_1_space3, 0, random_type_1_range3, mscreenheight);

break;

case random_effect_type_cross:

/**交錯的實現矩形相交

**/

int count = (mscreenheight / random_type_2_range);

for (int i = 0; i < count; i += 2)

for (int i = 1; i < count; i += 2)

break;

case random_effect_type_sector:

//rectf

為扇形繪製區域 為了讓扇形完全填充螢幕所以將它的區域擴大了

100畫素

rectf rectf = new rectf(- random_type_3_range, - random_type_3_range,mscreenwidth+random_type_3_range,mscreenheight + random_type_3_range); //

將扇形繪製出來

drawfillcircle(mcanvas, color.black,rectf,0,s_effrange,true);

break; }

} /**更新特效

**/

public void updataeffectrange(int range) 

} else if (s_effrange > s_effectrangetarget)  }

} /****/

public void setcurtaineffect(int type) 

setgamestate(game_effect); }

遊戲場景切換的問題

遊戲場景切換的問題 場景切換的時候從空場景到新場景的過程中由於資料多,會卡住一會,感覺就像是停止響應一樣 我想在空場景到新場景的過程中加個類似讀條的東西,就做個東西在那轉也可以.但是當開始載入新場景時,空場景裡所有東西都會卡住,包括那個假的進度條 用個 非同步載入 去載入下乙個場景 當下乙個場景在後...

Cocos遊戲場景切換(C )

這裡是主場景的介面的c include helloworldscene.h include gamescene.h using ns cc using namespace std scene helloworld createscene bool helloworld init size visib...

遊戲場景測試

在拿到了正式美術資源之後,首先關心的就是場景的尋路和碰撞問題。尋路是遊戲中人可以行走的區域,碰撞是場景中得物體所佔的空間。對於這2個問題,不同的遊戲有著不同的處理方式。有的是服務端有乙份資料,客戶端生成乙份資料,然後2份資料進行對比就可以很方便的找出不一樣的地方。但是我們的遊戲不是這樣做的,美術在做...