pygame用blit()實(shí)現(xiàn)動(dòng)畫效果的示例代碼
pygame的的實(shí)現(xiàn)動(dòng)畫的方法有很多,但是都是圍繞著表面進(jìn)行的,也就是說實(shí)現(xiàn)動(dòng)畫的方式不同,但是本質(zhì)其實(shí)都是對表面的不同處理方式而已。
原理其實(shí)很簡單,有點(diǎn)像我們做地鐵的時(shí)候隧道里的廣告一樣。我們設(shè)置一個(gè)窗口。然后讓窗口在一個(gè)畫著很多幀圖像的圖上面移動(dòng),當(dāng)我們透過這個(gè)窗口去觀察這幅圖的時(shí)候,只要窗口沿著一個(gè)方向去運(yùn)動(dòng),那么就會(huì)產(chǎn)生動(dòng)畫效果。
今天我介紹的是通過塊傳輸?shù)姆椒ㄈ?shí)現(xiàn)。
surface.blit(image,(x,y),rect) 在這里surface.blit()這個(gè)方法應(yīng)該大家都很熟悉了,我們就是利用第三個(gè)參數(shù),也就是繪制區(qū)域的變化實(shí)現(xiàn)的動(dòng)畫.我們將圖像的一部分繪制出來。如果加上一個(gè)簡單的循環(huán),讓繪制區(qū)域的位置發(fā)生變化。那么就可以實(shí)現(xiàn)動(dòng)畫效果啦。
這個(gè)方法實(shí)現(xiàn)的精靈動(dòng)畫很簡單.
完整代碼如下:
import pygame,sys screen = pygame.display.set_mode((600,800)) pygame.display.set_caption('動(dòng)畫測試') image = pygame.image.load('boss.png') rect = image.get_rect() rect2 = pygame.Rect(0,0,rect.width // 4,rect.height) tick = pygame.time.Clock() while: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() for n in range(4): tick.tick(4) rect2.x + = n * rect2.width if rect2.x> 1000: rect2.x = 0 screen.fill((255,255,255)) screen.blit(image,(0,0),rect2)#這里給了3個(gè)實(shí)參,分別是圖像,繪制的位置,繪制的截面框 pygame.display.flip()
其實(shí)還有一種方式實(shí)現(xiàn)動(dòng)畫,就是surface.subsurface(),明天我會(huì)介紹這個(gè)方法.
到此這篇關(guān)于pygame用blit()實(shí)現(xiàn)動(dòng)畫效果的示例代碼的文章就介紹到這了,更多相關(guān)pygame blit()動(dòng)畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python如何利用裝飾器實(shí)現(xiàn)重試機(jī)制
重試機(jī)制在編程中是比較常見的場景,主要被用于處理那些可能由于臨時(shí)性故障或網(wǎng)絡(luò)波動(dòng)等原因而失敗的操作,下面我們就來看看如何使用裝飾器來實(shí)現(xiàn)重試機(jī)制吧2024-03-03Python學(xué)習(xí)之列表常用方法總結(jié)
這篇文章主要為大家介紹了Python中列表的幾個(gè)常用方法總結(jié),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python列表有一定幫助,需要的可以參考一下2022-03-03Python調(diào)用系統(tǒng)底層API播放wav文件的方法
這篇文章主要介紹了Python調(diào)用系統(tǒng)底層API播放wav文件的方法,涉及Python使用pywin32調(diào)用系統(tǒng)底層API讀取與播放wav文件的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08神經(jīng)網(wǎng)絡(luò)訓(xùn)練采用gpu設(shè)置的方式
這篇文章主要介紹了神經(jīng)網(wǎng)絡(luò)訓(xùn)練采用gpu設(shè)置的方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03