Anda di halaman 1dari 6

GRAFICOS AUDIO Y ANIMACION

Gua de programacin de grupo


Jerarqua de grupo
Funciona igual que la jerarqua de objetos

local farBackground = display.newGroup()


local nearBackground = display.newGroup()
--this will overlay 'farBackground'
local foreground = display.newGroup() --and
this will overlay 'nearBackground'

Agregar objetos o hijos a un grupo

local myGroup = display.newGroup()


local rect1 = display.newRect( myGroup, 0, 0,
40, 40 )

Borrar un grupo

local myGroup = display.newGroup()


myGroup:removeSelf()
--OR
display.remove( myGroup )
myGroup = nil

Cuando se modifica la propiedad de un


grupo, se modifica las propiedades de todos
sus hijos
Transformacin de grupo
Al modificar las coordenadas del grupo, se
modifican a partir del centro del grupo, no
de la pantalla principal

---- transformacion de grupo


local myGroup = display.newGroup()
local myBox = display.newRect( myGroup,
100, 100, 80, 80 )
myBox:setFillColor( 1, 0, 0, 0.8 )
-- aplicando transformacion de coorddenadas
myGroup.x = 50
myGroup.y = 50
-- sirve para ver la posicion de myBox
--respecto a la pantalla principal
local actualBoxX, actualBoxY =
myBox:localToContent( 0,0 )
print( actualBoxX, actualBoxY )

Punto de anclaje y Grupos


Un grupo no posee punto de anclaje, ni
lmites, ms si sus hijos.
*Si a un grupo se le pone lmites se le llama
conteiner.

-- punto de anclaje de grupo


local myGroup = display.newGroup()
local blueBox = display.newRect( 50, 50, 50,
50 )
blueBox:setFillColor( 0, 0, 1, 0.8 )
myGroup:insert( blueBox )
-- aqu decimos que se respete el punto de
anclaje para todo el grupo
myGroup.anchorChildren = true

Transformaciones y puntos de anclaje


Ya se vio los mtodos Scale, rotation y
translate
Por defecto el punto de anclaje de un
onbjeto

Estos se aplican sobre el punto de anclaje


local rect2 = display.newRect( 0, 0, 50, 50 )
rect2.anchorX = 0 (0, 0.5 1)
rect2.anchorY = 0 (0, 0.5 1)

--(0,0) para la esquina superior izquierda


--(0.5,0.5) para el centro
--(1,1) para la esquina inferior derecha

Hojas de imagen
De esta manera se puede seleccionar una imagen de una hoja de imgenes, tambin se
pueden generar sprites
local options =
{
frames =
{
--frame 1
{
x = 0,
y = 0,
width = 232,
height = 276
},
--frame 2
{
x = 232,
y = 0,
width = 277,
height = 276
}
}
}
local sheet = graphics.newImageSheet( "mySheet.png", options )
local frame1 = display.newImage( sheet, 1, 100, 100 )
local frame2 = display.newImage( sheet, 2 ,200, 100)
Shape, path,fill y strokes
Shape

Paths

Es crear objetos en pantalla como:


Rectangle
display.newRect()
Rounded Rectangle
display.newRoundedRect()
Circle
display.newCircle()
Polygon
display.newPolygon()
Sirven para manipular los parmetros de los
shapes:
RectPath
Image. path.x1,
Image. path.x2,
Image. path.x3,
Image. path.x4,

Image.path.y1
Image.path.y2
Image.path.y3
Image.path.y4

RoundedRectPath
Image.path.height
Image.path.radius
Image.path.width
CirclePath
Image.path.radius

Fill y Stroke

Permiten pintar de varias maneras un objeto


Paint used to fill/stroke an object with a
solid color.
BitmapPaint used to fill/stroke an object
with an image.
CompositePaint used for multi-texture
fills/strokes.
GradientPaint used for linear gradient
fills/strokes.
ImageSheetPaint used to fill/stroke an
object with an image sheet frame.

Manipulacin de las mascaras


Function
Description
object.maskX
Sets or retrieves the x position of the mask.
object.maskY
Sets or retrieves the y position of the mask.
object.maskRotation
Sets or retrieves the rotation angle of the mask.
object.maskScaleX Sets or retrieves the x scale factor of the mask.
object.maskScaleY Sets or retrieves the y scale factor of the mask.
local mask = graphics.newMask( "maskframe.png" )
local mountains = display.newImageRect( "mountains.png", 280, 216 )
mountains.x, mountains.y = 200,160
mountains:setMask( mask )
mountains.maskX = -10
mountains.maskRotation = 20
mountains.maskScaleX = 0.8
mountains.maskScaleY = 0.8

Aplicando mascara a un grupo


local group = display.newGroup()
local mask = graphics.newMask( "maskframe.png" )
group:setMask( mask )
group.maskX = group.x
group.maskY = group.y

Quitando mascara a la imagen


local mask = graphics.newMask( "maskframe.png" )
local mountains = display.newImageRect( "mountains.png", 280, 216 )
mountains.x, mountains.y = 200,160
mountains:setMask( mask )
--- a partir de aqu
mountains:setMask( nil )
mask = nil

Manipulando un conteiner

-- Create a container
local container = display.newContainer( 128, 128 )
-- Create an image
local bkgd = display.newImage( "aquariumbackgroundIPhone.jpg" )
-- Insert the image into the container
container:insert( bkgd, true )
-- Center the container in the display area
container:translate( display.contentWidth*0.5, display.contentHeight*0.5 )
-- Transition (rotate) the container
transition.to( container, { rotation=360, transition=easing.inOutExpo} )
Snapshot
Son parecidos a los grupos, pero con algunas caractersticas adicionales, a continuacin se
usa un snapshot:
local snapshot = display.newSnapshot( 200, 200 )
math.randomseed( 0 ) neutraliza el random
-- Add 4 fish images to the screen
for i = 1,4 do
-- Create a fish
local fish = display.newImage( "fish-small-red.png" )
-- Move it to a random position relative to the snapshot's origin
fish:translate( math.random( -100, 100 ), math.random( -100, 100 ) )
-- Insert the fish into the snapshot
snapshot.group:insert( fish )
end
snapshot:translate( display.contentCenterX, display.contentCenterY ) -- Center the snapshot
on the screen
snapshot:invalidate()
-- Invalidate the snapshot, permite
actualizacin den renderizado
transition.to( snapshot, { alpha=0, time=2000 } )
-- Fade the snapshot out
Audio
Manipulando audio
Usado para sonidos cortos, menos
costoso
Cargando audio en una tabla

local soundEffect = audio.loadSound( "chime.wav" )


audio.play( soundEffect )
local soundTable = {
chimeSound = audio.loadSound( "chime.wav" ),
bellSound = audio.loadSound( "bell.wav" ),
buzzSound = audio.loadSound( "buzz.aac" ),
clickSound = audio.loadSound( "click.aac" )
}
audio.play( soundTable["chimeSound"] )

Cambiando volumen de audio

audio.setVolume( 0.5 )

Cambiando volumen de audio en el


canal 1
Manipulando streaming
Usado para sonidos largos, ms
costoso
Eventos de audio
Aqu se ejecuta una funcin cuando
el audio termina de sonar.

audio.setVolume( 0.5, { channel=1 } )


local backgroundMusic =
audio.loadStream( "backgroundMusic.wav" )
audio.play( backgroundMusic )
local function bombExplode( event )
--bomb has exploded!
end
local tickSound = audio.loadSound( "tick.wav" )
audio.play( tickSound, { onComplete=bombExplode } )

Cuando una funcin listener es


llamada, los siguientes eventos de
audio estn disponible

event.name - string con el valor soundCompletion


event.channel numero del channerl relacionado con el
sonido completado
event.handle manipulacin de audio relacionado con
el sonido completado
event.completed - valor boleano que devuelbe true
si el audio finaliza por si mismo y false si fue
interrumpido

Controlando el audio
audio.pause()- pausa la reproduccin
en uno o varios canales

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =
audio.play( backgroundMusic )
audio.pause(backgroundMusicChannel)

audio.resume()resume la reproduccin
en uno o varios canales

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =
audio.play( backgroundMusic , { loops=-1 } )
audio.pause( backgroundMusic )
-- resume after 3 seconds
timer.performWithDelay( 3000, function()
audio.resume( backgroundMusicChannel )
end, 1 )

audio.rewind() reinicia el audio en


uno o varios canales

audio.rewind() -- rewind all channels


audio.rewind( backgroundMusic ) -- rewind the audio
handle
audio.rewind( { channel=1 } ) -- rewind channel 1

audio.stop() detiene el audio en uno


o varios canales para que sean
reproducidos nuevamente

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =
audio.play( backgroundMusic )
audio.stop( backgroundMusicChannel )

audio.stopWithDelay() detiene el
audio en uno o varios canales para
que sean reproducidos nuevamente luego
de un tiempo determinado

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =
audio.play( backgroundMusic )
--audio.stopWithDelay( 3000,
{ channel=backgroundMusicChannel } )
--or
audio.stopWithDelay(3000, backgroundMusicChannel)

audio.fade()
Baja o sube progresivamente un canal o
todos los canales para un volumen

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =

especificado sobre la cantidad


especificada de tiempo.

audio.play( backgroundMusic )
audio.fade( { channel=1, time=5000, volume=0.5 } )

audio.fadeOut()
Baja al mnimo un canal o todos los
canales para un volumen especificado
sobre la cantidad especificada de
tiempo.
audio.seek()
empieza a reproducir es sonido desde
un tiempo establecido, es como un
setTime, jejej txd

local backgroundMusic = audio.loadSound( "cora.ogg" )


local backgroundMusicChannel =
audio.play( backgroundMusic )
audio.fadeOut( { channel=1, time=5000 } )
local backgroundMusic = audio.loadSound( "cora.ogg" )
local backgroundMusicChannel =
audio.play( backgroundMusic )
audio.seek( 60000 , backgroundMusicChannel)

Apagando audio
-- Load a laser sound and a background music stream
into memory
local laserSound = audio.loadSound( "laserSound.wav" )
local backgroundMusic =
audio.loadStream( "backgroundMusic.m4a" )
-- Play both the sound and the stream
local playLaserSound = audio.play( laserSound )
local playBackgroundMusic =
audio.play( backgroundMusic )
-- Stop both the sound and the stream and 'nil' out
each reference
audio.stop( playLaserSound )
playLaserSound = nil
audio.stop( playBackgroundMusic )
playBackgroundMusic = nil
-- Dispose the handles from memory and 'nil' out each
reference
audio.dispose( laserSound )
audio.dispose( backgroundMusic )
laserSound = nil --prevents the handle from being
used again
backgroundMusic = nil --prevents the handle from
being used again
Rendimiento
Usar estos canales 11025, 22050, and
44100
Usar audio monoestereo

Para ello en el config.lua realizar


application =
{
content =
{
width = 480,
height = 960,
scale = "letterbox",
audioPlayFrequency = 22050
},
}

-- esto