真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

surfaceView開發(fā)游戲初涉一-創(chuàng)新互聯(lián)

在使用surfaceView開發(fā)一個(gè)小游戲的過程中,遇到的一些問題記錄:

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都小攪拌車等,在重慶網(wǎng)站建設(shè)、成都營銷網(wǎng)站建設(shè)、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

一、使用

    類A繼承自surfaceView,在構(gòu)造函數(shù)中使用getHolder()得到SurfaceHolder對(duì)象,SurfaceHolder可以得到Canvas對(duì)象,有了Canvas對(duì)象就可以做畫圖相關(guān)的操作了。

SurfaceHolder holder = getHolder();
Canvas canvas = holder.lock();
if(canvas == null){
    return;
}
canvas.save();
    //畫圖相關(guān)操作
canvas.restore();
holder.unlockCanvasAndPost(canvas);

    以上就是surfaceView的通用使用方式了,可以在線程中使用(這是與View的大區(qū)別)。

    以上代碼有幾個(gè)注意點(diǎn)

        1、必須判斷canvas為空,如果使用線程循環(huán)操作時(shí),在應(yīng)用切換到后臺(tái),或退出應(yīng)用時(shí),canvas得到的對(duì)象是為空的。

        2、必須為canvas繪制背景圖,如果沒有背景圖,繪制的圖像在執(zhí)行幾次循環(huán)后,就會(huì)出現(xiàn)重影(在這個(gè)地方被坑了半天surfaceView開發(fā)游戲初涉一)。

二、開發(fā)游戲的時(shí)候參考了http://tanqisen.github.io/blog/2013/09/13/develop-android-wechat-flight-game-step-by-step-1/  這篇文章,博主寫的游戲是一個(gè)小的框架,很到的體現(xiàn)了面向?qū)ο蟮乃枷搿T谶@篇文章中博主的資源文件(.plist)是從微信上扣出來的。也沒有對(duì)旋轉(zhuǎn)的圖片進(jìn)行處理。這里補(bǔ)上我的一些處理經(jīng)驗(yàn)。

        1、plist圖像文件的生成和json字符串的生成。

                生成以上文件使用了一個(gè)破解版的工具TexturePacker。在處理這個(gè)問題時(shí)一個(gè)有游戲開發(fā)經(jīng)驗(yàn)的同事給了我很大的幫助。非常感謝他。

        2、對(duì)于在plist中被旋轉(zhuǎn)圖片的處理。

                前提是使用TexturePacker生成的json格式的文件。將http://tanqisen.github.io/blog/2013/09/13/develop-android-wechat-flight-game-step-by-step-1/的代碼下載下來后,找到GameContext中的displayArt()方法。

canvas.save();
		Sprite s = spriteManager.getSprite(a.sprite);
		Rect spriteFrame = a.spriteFrame();
		Rect colorRect = s.spriteColorRect;
		int left = 0,top = 0,right = 0,bottom = 0;
		if(s.isRotated()){
			int height = bmp.getWidth();
			Frame frame = s.getFrame();
			left = frame.getY()+spriteFrame.left;
			top = height-(frame.getX()+frame.getH())+spriteFrame.top;
			right = left + frame.getW();
			bottom = top + frame.getH();
			
			Matrix matrix = new Matrix();
			int px = 0,py = 0;
			px = spriteFrame.left;
			py = spriteFrame.top+height;
			matrix.setTranslate(px, py);
			matrix.postRotate(-90,px, py);
			canvas.clipRect(left, top, right, bottom);
			canvas.drawBitmap(bmp,matrix,paint);
		}else{
			left   = spriteFrame.left;
			top    = spriteFrame.top;
			right  = left + colorRect.width();
			bottom = top + colorRect.height();
			canvas.clipRect(leftviewRect.right?viewRect.right:right, bottom>viewRect.bottom?viewRect.bottom:bottom);
			canvas.drawBitmap(bmp, left - colorRect.left, top - colorRect.top, paint);
		}
		canvas.restore();

這是對(duì)被旋轉(zhuǎn)順時(shí)針旋轉(zhuǎn)90度的處理方法。

        結(jié)語:

                感謝Cooper的文章分享,在進(jìn)入陌生的開發(fā)領(lǐng)域時(shí)有一位有經(jīng)驗(yàn)的朋友幫助是很重要的。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


新聞名稱:surfaceView開發(fā)游戲初涉一-創(chuàng)新互聯(lián)
本文URL:http://weahome.cn/article/dgiodc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部