Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Archived:Criando animações em PySymbian

From Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Compatibilidade
Plataforma(s): Python for Symbian

Artigo
Criado por felipebzr em 24 Jun 2008
Última alteração feita por hamishwillee em 07 May 2013

O exemplo a seguir serve apenas como base para o desenvolvimento da classe Sprite existente no MIDP 2.0 do Java ME. A criação de um framework para games ajudaria a simplificar o desenvolvimento de aplicações com o Python para Symbian.

O Python para Symbian é uma linguagem robusta, simples e bastante poderosa. Apesar de não prover API's nativas para desenvolvimento de games, como as existentes no PyGame, podemos facilmente criar algumas destas classes.

Primeiros passos

Se você está começando a usar Python para Symbian, aconselho a leitura prévia de materiais de introdução.

Exemplo

Caso este seja seu primeiro contato com o Python para Symbian, faça o download do runtime e do python script shell.

Após a instalação, crie um diretório com o nome Python no seu cartão de memória e copie o código abaixo em um novo arquivo com a extensão .py

A imagem também deve ser copiada para a pasta Python recém-criada no cartão de memória.

Tiled owner flatten.png

import appuifw
import e32
from graphics import Image
 
## Sprite
# Similar a classe Sprite do pacote game disponível na MIDP 2.0
# Este trecho de código foi criado em apenas 30 minutos, e nao foi exaustivamente testado
# podendo existir diversas falhas em sua implementacao, qualquer melhoria é bem vinda.
class Sprite:
## Construtor da classe
# @param self The object pointer.
def __init__( self, aImg, aFrWidth, aFrHeight ):
self._iImg = aImg
self._iFrWidth = aFrWidth
self._iFrHeight = aFrHeight
self._iCurrentFrame = 1
self._iIndFrame = 0
self._iWidth, self._iHeight = self._iImg.size
self._iMaxWidthFrames = self._iWidth / self._iFrWidth
self._iMaxHeightFrames = self._iHeight / self._iFrHeight
self._iFrameSequence = [0]
self._iPosX = 0
self._iPosY = 0
# end __init__
 
## Seta a sequencia de frames
# @param self The object pointer.
# @param aSeq Sequencia dos frames.
def set_frame_sequence( self, aSeq ):
self._iIndFrame = 0
self._iFrameSequence = aSeq
self._iCurrentFrame = self._iFrameSequence[self._iIndFrame]
# end set_frame_sequence
 
## Seta o posicionamento do objeto na tela
# @param self The object pointer.
# @param aPos Posicionamento do objeto.
def set_position( self, aPos ):
self._iPosX, self._iPosY = aPos
# end set_position
 
## Seta o próximo frame
# @param self The object pointer.
def next_frame( self ):
self._iIndFrame += 1
if self._iIndFrame == len(self._iFrameSequence):
self._iIndFrame = 0
self._iCurrentFrame = self._iFrameSequence[self._iIndFrame]
# end next_frame
 
## Seta o frame atual
# @param self The object pointer.
# @param aFrame frame.
def set_frame( self, aFrame ):
self._iCurrentFrame = self._iFrameSequence[aFrame]
# end set_frame
 
## Desenha o objeto na tela de acordo com a posicao e o frame atual
# @param self The object pointer.
# @param aGraphics Canvas.
def paint ( self, aGraphics ):
aGraphics.blit(self._iImg, target=(self._iPosX, self._iPosY), \
source=((self._iCurrentFrame-1) * self._iFrWidth, 0, self._iCurrentFrame * self._iFrWidth, self._iCurrentFrame * self._iFrHeight))
# end paint
 
## SpriteAnimation
# Responsavel por criar os objetos na tela
class SpriteAnimation:
## Construtor da classe
# @param self The object pointer.
def __init__( self ):
# Define o corpo da aplicação
self._iCanvas = appuifw.Canvas()
appuifw.body = self._iCanvas
 
# altura e largura do canvas
self._cWidth, self._cHeight = self._iCanvas.size
 
# Sprite
self._iImgPlayer = Image.open("e:\\Python\\tiled_owner_flatten.png")
self._iPlayer = Sprite(self._iImgPlayer, 60, 70)
self._iPlayer.set_frame_sequence([5, 6, 7])
self._iPlayer.set_position((self._cWidth/2 - 30, self._cHeight/2 - 35))
 
# define o evento de saída da aplicação
appuifw.app.exit_key_handler = self.quit
 
# seta o status da aplicacao
self._iRunning = True
 
# define um background branco
self._iCanvas.rectangle((0, 0, 240, 320), outline = 0xFFFFFF, width=240)
 
# define a resolucao da tela
appuifw.app.screen = 'full' # (full, large, normal)
 
# cria um loop principal da aplicação
self.paint()
# end __init__
 
## Redesenha os objetos na tela
# @param self The object pointer.
def paint( self ):
while self._iRunning:
self._iCanvas.clear()
self._iPlayer.paint( self._iCanvas )
self._iPlayer.next_frame()
 
# Processa eventos pendentes
e32.ao_yield()
 
# taxa de atualização
e32.ao_sleep(0.1)
# end paint
 
## Manipula a saída do aplicativo
# @param self The object pointer.
def quit( self ):
self._iRunning = 0
# end quit
 
animation = SpriteAnimation()

Autor

FelipeAndrade -- 04:35, 24 June 2008 (EEST)

This page was last modified on 7 May 2013, at 11:22.
396 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×