//***************************************************************
//** By Damo the Great
//** A Roational Stopwatch with some text movement effects - This will
//** create a clock face with drawing commands and the use of maths
//** to get the angle correctly
//** But most importantly, it builds up tweens to calculate around
//** the clock face and every second, it will move round, changing colours
//** changing angles, and added a bit extra to create a Text Tween of which
//** you can easily programatically do wonderful things with TextTweens
//**
//** Example of various tween commands
//**
//** SetTweenSpriteXByOffset
//** SetTweenSpriteYByOffset
//** SetTweenSpriteAngle
//** SetTweenSpriteBlue
//** SetTweenSpriteRed
//** SetTweenSpriteGreen
//** CreateTweenSprite
//** CreateTweenChain
//** AddTweenChainSprite
//** UpdateTweenChain
//** PlayTweenChain
//** PlayTweenChain
//** UpdateAllTweens
//*************************************************************
// Lets setup the display
#Constant width=1024
#Constant height=768
SetWindowSize( width, height, 0 )
SetVirtualResolution( width, height )
tween as integer[60]
// Setup a starting location and colours
oldpositionx=width/2 : oldpositiony=height/2
beginx#=width/2
beginy#=height/2
// *******************************************************************
// Lets create a sprite first and position it somewhere on the screen
render()
DrawEllipse(0,0,50,50,makecolor(255,255,255),makecolor(255,255,255),1)
swap()
sprite = CreateSprite( getimage(0,0,50,50 ))
SetSpritePosition(sprite,oldpositionx,oldpositiony)
SetSpriteScale(sprite,.5,.5)
SetSpritePositionByOffset(sprite,50,50)
// *******************************************************************
//Setup a chain of tweens to follow on from one another in a sequence
chain=CreateTweenChain()
secstep=30 // 30 = as minute hands, 12 = hours, 6 = seconds
depth#=200 // the distance of the starting (centre of screen to the end
sec=secstep
// Lets setup the multiple of tweems depending how big you have set the tween array above
for tweens=1 to tween.length
// Create a sprite tween first with a delay of 1 (so at least it starts)
tween[tweens] = CreateTweenSprite( 1 )
// Lets create a new position - This is how to work out Angles particularly for a
// clock face
endx#=width/2 - depth# * cos(270-sec)
endy#=height/2 + depth# * sin(270-sec)
inc sec,secstep
// +30 cause a full circle is 360d and there are 12 hands in the hour hand - 360/12 = 30
endcolour=random(1,255)
// Setup the coordinates begin and end and interpolation
// There are a few default interopulations with nice effects
SetTweenSpriteXByOffset(tween[tweens],beginx#,endx#,TweenBounce())
SetTweenSpriteYByOffset(tween[tweens],beginy#,endy#,TweenBounce())
// Setup an angle for the sprite which will change the angle in one pass of the update
SetTweenSpriteAngle(tween[tweens],220-secstep+sec,220-secstep+sec,TweenLinear())
// For effect change the tween colour upon stages of the length
// Starting at BeginColour and EndColour variables
SetTweenSpriteBlue(tween[tweens],random(1,255),random(1,255),TweenSmooth1())
SetTweenSpriteRed(tween[tweens],random(1,255),random(1,255),TweenSmooth1())
SetTweenSpriteGreen(tween[tweens],random(1,255),random(1,255),TweenSmooth1())
// When the for loop is finished --> Next then next rotation of the for loop the tween
// commands need to remember where and what colour the tween finished up at and for it
// to start where it finished
begincolour=endcolour
beginx#=endx#
beginy#=endy#
AddTweenChainSprite( chain, tween[tweens], sprite, 0 )
next
// Mainloop to setup the clock and start the tweens
do
// Make some lines for a clock face.
for a=1 to 360 step secstep
endx#=width/2 + (depth#-40) * cos(a)
endy#=height/2 - (depth#-40) * sin(a)
drawline(width/2,height/2,endx#,endy#,makecolor(255,255,255),makecolor(0,0,0))
DrawEllipse(endx#,endy#,5,5,makecolor(0,0,0),makecolor(0,255,255),1)
next
// We can play the tweens by running the chain event
PlayTweenChain( chain )
UpdateAllTweens(GetFrameTime())
Sync()
loop
// Simple Sprite Tween Example // Translate x and y values // Change the colours all in the same tween ) // Load a sample image image001 = LoadImage("/media/football128.png") // Create a standard sprite // Position the sprite to the top left of the screen as we will // tween its position to the bottom right. sprite001 = CreateSprite(image001) SetSpriteSize(sprite001,20,20) SetSpritePosition(sprite001,0,0) // Create a simple x translation tween with bounce easing // over 2 seconds. ( Time includes easing)! tweenSprite001 = CreateTweenSprite( 2 ) // Create a simple x translation tween with bounce easing // over 2 seconds. ( Time includes easing)! SetTweenSpriteX( tweenSprite001, 0, 80, TweenBounce()) // Create a simple y translation tween with bounce easing // over 2 seconds. SetTweenSpriteY( tweenSprite001, 0, 80, 5) // Tween The Red,Green and Blue Colors (Note you can use integer values or alias names for the interpolation) SetTweenSpriteRed( tweenSprite001, 255, 0, 3 ) SetTweenSpriteGreen( tweenSprite001, 255, 0, 5 ) SetTweenSpriteBlue( tweenSprite001, 255, 0, 7 ) // Set the tween to start playing on the sprite // Delay the start by half a second PlayTweenSprite( tweenSprite001, sprite001, .5 ) // Main Loop do Print("Simple Sprite Tween Example") // Update tweens UpdateAllTweens( GetFrameTime() ) Sync() loop