免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4606 | 回复: 4
打印 上一主题 下一主题

pys60如何设置PNG透明? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-16 17:42 |只看该作者 |倒序浏览
在常识按照J2ME的游戏例子做个PYS60版的....累死...
现在遇到的困难是PNG图如何透明?我导入的背景透明的PNG图放到PYS60里不是带黑色背景就是白色背景....请各位高手帮忙解决.
附上截图和代码:


  1. from appuifw import *
  2. import e32
  3. from key_codes import *
  4. from graphics import *
  5. class Sub:
  6.     def __init__(self):
  7.         self.sleep = 20
  8.         self.running = 1
  9.         self.old_body=appuifw.app.body
  10.         self.canvas=appuifw.Canvas(redraw_callback=None)
  11.         self.draw=Draw(self.canvas)
  12.         appuifw.app.body=self.canvas
  13.         self.mapx,self.mapy = self.canvas.size
  14.         self.bg = Image.open("c:\\densityLayer0.png")
  15.         self.bgx,self.bgy = 10,10
  16.         self.sub = Image.open("c:\\sub.png")
  17.         self.subx,self.suby = 60,30
  18.         self.submovex,self.submovey = 0,0
  19.         self.suboldmovex,self.suboldmovey = 0,0
  20.         self.canvas.bind(EKeyUpArrow,lambda:self.subUp())
  21.         self.canvas.bind(EKeyDownArrow,lambda:self.subDown())
  22.         self.canvas.bind(EKeyLeftArrow,lambda:self.subLeft())
  23.         self.canvas.bind(EKeyRightArrow,lambda:self.subRight())
  24.         self.canvas.bind(EKeySelect,lambda:self.subFire())
  25.     def subUp(self):
  26.         self.suboldmovey = self.submovey
  27.         if self.submovey>0:
  28.             self.submovey = self.submovey-10
  29.         self.drawOtherBackGround()
  30.         self.drawSub()
  31.     def subDown(self):
  32.         self.suboldmovey = self.submovey
  33.         if self.submovey<(self.mapy-self.suby):
  34.             self.submovey = self.submovey+10
  35.         self.drawOtherBackGround()
  36.         self.drawSub()
  37.     def subRight(self):
  38.         self.suboldmovex = self.submovex
  39.         if self.submovex<(self.mapx-self.subx):
  40.             self.submovex = self.submovex+10
  41.         self.drawOtherBackGround()
  42.         self.drawSub()
  43.     def subLeft(self):
  44.         self.suboldmovex = self.submovex
  45.         if self.submovex>0:
  46.             self.submovex = self.submovex-10
  47.         self.drawOtherBackGround()
  48.         self.drawSub()
  49.     def subFire(self):
  50.         print "fire"
  51.     def drawSub(self):
  52.         sub = self.sprite(self.sub,self.subx,self.suby)
  53.         self.drawImage(self.sub,target=(self.submovex,self.submovey),source=sub[0])
  54.     def drawOtherBackGround(self):#补游戏背景
  55.         bgres = self.sprite(self.bg,self.bgx,self.bgy)
  56.         bg = self.background(self.suboldmovex,self.suboldmovey,self.subx,self.suby,10,10)
  57.         for b in bg:
  58.             self.drawImage(self.bg,target=b,source=bgres[0])
  59.         
  60.     def drawBackground(self):#全铺游戏背景
  61.         bgres = self.sprite(self.bg,self.bgx,self.bgy)
  62.         bg = self.background(0,0,self.mapx,self.mapy,10,10)
  63.         for b in bg:
  64.             self.drawImage(self.bg,target=b,source=bgres[0])
  65.     def sprite(self,im,w,h):#拆PNG图
  66.         (imw,imh)=im.size
  67.         if imw<w or imh<h:
  68.             return (0,0,imw,imh)
  69.         bx=0
  70.         ex=0
  71.         by=0
  72.         ey=0
  73.         sp = []
  74.         while ey<imh:
  75.             if ey==0:
  76.                 by=0
  77.                 ey=h
  78.             else:
  79.                 by=by+h
  80.                 ey=ey+h
  81.             while ex<imw:
  82.                 if ex==0:
  83.                     bx=0
  84.                     ex=w
  85.                 else:
  86.                     bx=bx+w
  87.                     ex=ex+w
  88.                 sp.append((bx,by,ex,ey))
  89.             else:
  90.                 ex=0
  91.                 bx=0
  92.         return sp
  93.    
  94.     def background(self,startx,starty,mapx,mapy,imw,imh):#获得背景图坐标表
  95.         bx=0
  96.         ex=0
  97.         by=0
  98.         ey=0
  99.         bg = []
  100.         while ey<mapy:
  101.             if ey==0:
  102.                 by=starty
  103.                 ey=imh
  104.             else:
  105.                 by=by+imh
  106.                 ey=ey+imh
  107.             while ex<mapx:
  108.                 if ex==0:
  109.                     bx=startx
  110.                     ex=imw
  111.                 else:
  112.                     bx=bx+imw
  113.                     ex=ex+imw
  114.                 bg.append((bx,by,ex,ey))
  115.             else:
  116.                 ex=0
  117.                 bx=0
  118.         return bg
  119.    
  120.     def openImage(self,img):#打开图片 没用
  121.         return Image.open(img)
  122.     def drawImage(self,img,target,source):#画图
  123.         self.draw.blit(img,target=target,source=source)
  124.     def set_exit(self):#退出
  125.         self.running = 0
  126.     def run(self):
  127.         appuifw.app.exit_key_handler = self.set_exit
  128.         self.drawBackground()
  129.         self.drawSub()
  130.         while self.running:
  131.             
  132.             
  133.             #print self.subx,self.suby,sub
  134.             
  135.             #e32.ao_sleep(0.01)
  136.             e32.ao_yield()
  137.         
  138. appuifw.app.screen='full'
  139. s = Sub()
  140. s.run()
  141.         
复制代码

sub1.jpg (76.36 KB, 下载次数: 79)

游戏截图

游戏截图

论坛徽章:
0
2 [报告]
发表于 2006-05-16 17:43 |只看该作者
谢谢各位 请帮忙啊

论坛徽章:
0
3 [报告]
发表于 2006-05-16 18:26 |只看该作者
PNG图片好像是必须有背景的吧

论坛徽章:
0
4 [报告]
发表于 2007-07-26 18:13 |只看该作者
楼主解决了么?我也遇到了这个问题。qq:2703521一起研究

论坛徽章:
0
5 [报告]
发表于 2007-07-31 18:02 |只看该作者
问题解决了。要自己做mask
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP