- 论坛徽章:
- 0
|
在常识按照J2ME的游戏例子做个PYS60版的....累死...
现在遇到的困难是PNG图如何透明?我导入的背景透明的PNG图放到PYS60里不是带黑色背景就是白色背景....请各位高手帮忙解决.
附上截图和代码:
- from appuifw import *
- import e32
- from key_codes import *
- from graphics import *
- class Sub:
- def __init__(self):
- self.sleep = 20
- self.running = 1
- self.old_body=appuifw.app.body
- self.canvas=appuifw.Canvas(redraw_callback=None)
- self.draw=Draw(self.canvas)
- appuifw.app.body=self.canvas
- self.mapx,self.mapy = self.canvas.size
- self.bg = Image.open("c:\\densityLayer0.png")
- self.bgx,self.bgy = 10,10
- self.sub = Image.open("c:\\sub.png")
- self.subx,self.suby = 60,30
- self.submovex,self.submovey = 0,0
- self.suboldmovex,self.suboldmovey = 0,0
- self.canvas.bind(EKeyUpArrow,lambda:self.subUp())
- self.canvas.bind(EKeyDownArrow,lambda:self.subDown())
- self.canvas.bind(EKeyLeftArrow,lambda:self.subLeft())
- self.canvas.bind(EKeyRightArrow,lambda:self.subRight())
- self.canvas.bind(EKeySelect,lambda:self.subFire())
- def subUp(self):
- self.suboldmovey = self.submovey
- if self.submovey>0:
- self.submovey = self.submovey-10
- self.drawOtherBackGround()
- self.drawSub()
- def subDown(self):
- self.suboldmovey = self.submovey
- if self.submovey<(self.mapy-self.suby):
- self.submovey = self.submovey+10
- self.drawOtherBackGround()
- self.drawSub()
- def subRight(self):
- self.suboldmovex = self.submovex
- if self.submovex<(self.mapx-self.subx):
- self.submovex = self.submovex+10
- self.drawOtherBackGround()
- self.drawSub()
- def subLeft(self):
- self.suboldmovex = self.submovex
- if self.submovex>0:
- self.submovex = self.submovex-10
- self.drawOtherBackGround()
- self.drawSub()
- def subFire(self):
- print "fire"
- def drawSub(self):
- sub = self.sprite(self.sub,self.subx,self.suby)
- self.drawImage(self.sub,target=(self.submovex,self.submovey),source=sub[0])
- def drawOtherBackGround(self):#补游戏背景
- bgres = self.sprite(self.bg,self.bgx,self.bgy)
- bg = self.background(self.suboldmovex,self.suboldmovey,self.subx,self.suby,10,10)
- for b in bg:
- self.drawImage(self.bg,target=b,source=bgres[0])
-
- def drawBackground(self):#全铺游戏背景
- bgres = self.sprite(self.bg,self.bgx,self.bgy)
- bg = self.background(0,0,self.mapx,self.mapy,10,10)
- for b in bg:
- self.drawImage(self.bg,target=b,source=bgres[0])
- def sprite(self,im,w,h):#拆PNG图
- (imw,imh)=im.size
- if imw<w or imh<h:
- return (0,0,imw,imh)
- bx=0
- ex=0
- by=0
- ey=0
- sp = []
- while ey<imh:
- if ey==0:
- by=0
- ey=h
- else:
- by=by+h
- ey=ey+h
- while ex<imw:
- if ex==0:
- bx=0
- ex=w
- else:
- bx=bx+w
- ex=ex+w
- sp.append((bx,by,ex,ey))
- else:
- ex=0
- bx=0
- return sp
-
- def background(self,startx,starty,mapx,mapy,imw,imh):#获得背景图坐标表
- bx=0
- ex=0
- by=0
- ey=0
- bg = []
- while ey<mapy:
- if ey==0:
- by=starty
- ey=imh
- else:
- by=by+imh
- ey=ey+imh
- while ex<mapx:
- if ex==0:
- bx=startx
- ex=imw
- else:
- bx=bx+imw
- ex=ex+imw
- bg.append((bx,by,ex,ey))
- else:
- ex=0
- bx=0
- return bg
-
- def openImage(self,img):#打开图片 没用
- return Image.open(img)
- def drawImage(self,img,target,source):#画图
- self.draw.blit(img,target=target,source=source)
- def set_exit(self):#退出
- self.running = 0
- def run(self):
- appuifw.app.exit_key_handler = self.set_exit
- self.drawBackground()
- self.drawSub()
- while self.running:
-
-
- #print self.subx,self.suby,sub
-
- #e32.ao_sleep(0.01)
- e32.ao_yield()
-
- appuifw.app.screen='full'
- s = Sub()
- s.run()
-
复制代码 |
|