Basic PNG Animation

Monkey Targets Forums/Flash/Basic PNG Animation

time-killer-games(Posted 2012) [#1]
This is a really stupid question, but how do I make a basic looping animation? Here's my code:

Import mojo
Import monkey
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00001.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00002.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00003.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00004.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00005.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00006.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00007.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00008.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00009.png"
Import "C:\Users\Joseph\Documents\MonkeyPro56\Sleeping Disorder\00010.png"

Global ImageIndex:Int
Global ImageId01:Image
Global ImageId02:Image
Global ImageId03:Image
Global ImageId04:Image
Global ImageId05:Image
Global ImageId06:Image
Global ImageId07:Image
Global ImageId08:Image
Global ImageId09:Image
Global ImageId10:Image

Function Main:Int() ; New MyApp ; End

Class MyApp Extends App
	
	Method OnCreate()	
		SetUpdateRate 60
                ImageIndex=1
                ImageId01=LoadImage("00001.png")
                ImageId02=LoadImage("00002.png")
                ImageId03=LoadImage("00003.png")
                ImageId04=LoadImage("00004.png")
                ImageId05=LoadImage("00005.png")
                ImageId06=LoadImage("00006.png")
                ImageId07=LoadImage("00007.png")
                ImageId08=LoadImage("00008.png")
                ImageId09=LoadImage("00009.png")
                ImageId10=LoadImage("00010.png")
	End
	
	Method OnUpdate()
                If ImageIndex>10 Then ImageIndex=1 Else ImageIndex+=1
	End
	
	Method OnRender()
                If ImageIndex = 1 Then 
			DrawImage(ImageId01)
                If ImageIndex = 2 Then 
			DrawImage(ImageId02)
                If ImageIndex = 3 Then 
			DrawImage(ImageId03)
                If ImageIndex = 4 Then 
			DrawImage(ImageId04)
                If ImageIndex = 5 Then 
			DrawImage(ImageId05)
                If ImageIndex = 6 Then 
			DrawImage(ImageId06)
                If ImageIndex = 7 Then 
			DrawImage(ImageId07)
                If ImageIndex = 8 Then 
			DrawImage(ImageId08)
                If ImageIndex = 9 Then 
			DrawImage(ImageId09)
                If ImageIndex = 10 Then 
			DrawImage(ImageId10)
	End
	
End



slenkar(Posted 2012) [#2]
I dont think you have to import images

If the animation is going too fast put a delay in there inbetween each animation-frame
create some variables:

animation_timer:Int=0
anim_frame:Int=1
anim_delay:Int=150


create an array of images called image_array:Image[50]

then
if MilliSecs() > animation_timer+anim_delay
anim_frame=anim_frame+1
animation_timer=MilliSecs()
if anim_frame>10
anim_frame=1
endif
endif



	Method OnRender()
         DrawImage(image_array[anim_frame],0,0)
	End



time-killer-games(Posted 2012) [#3]
It gives me this error in the output tab:
C:/Users/Joseph/Documents/MonkeyPro56/FlashRunner.monkey<77> : Syntax error - unexpected token ''
Monkey runtime error: C:/Users/Joseph/Documents/MonkeyPro56/FlashRunner.monkey<77> : Syntax error - unexpected token ''


I'm having a little trouble understanding. Could you please provide a little more code? I feel clueless.


dave.h(Posted 2012) [#4]
heres the easiest was i know of but i bet someone else can give you something better.The code below works i tested it.



There is no scaling or timing in it apart from setupdaterate 30


time-killer-games(Posted 2012) [#5]
OMG! It works! Thanks a ton!