Вы находитесь на странице: 1из 4

16.Timer(Temporizador).Pausa.

BajarTimer.zip

Tutorial.EstudiodelTimer.Pausa.
Presentacin
AunqueyalovimoseneltutorialTres_iguales,vamosainsistirenlaherramientaTimer.

ElTimeresuntemporizador.ElcdigoquetienedentrodesuSubrutinaserepitecadaciertoIntervaldetiempo.

SubTimer1_Tick
'Elcdigoqueponemosaqu
'serepitecontinuamentecadaIntervaldetiempo.
'ElIntervalesunapropiedaddelTimer
EndIf

ElTimernoesuncontrol"fsico"queaparezcaenelActivity.Ademslodebemoscrearenelcdigo,yaquenoexisteenel
Designer.

PrimeroentramosenelprogramaBasic4Android/Tools/RunAVDManager
LuegoenelAndroidSDKManager/Tools/ManageAVDs...
MarcamosunAVDName/ypulsamosStartyluegoLaunchparaabrirunemulador

Creamosloscontroles

BajarTimer.zip
Insertamosmediante
Designer/AddView

SeekBar1Maxvalue=1000'1000
milisegundossonunsegundo
Label1
Label2

GuardamoselDesigner:
File/Save:Layout

ConectamoselDesigneralemulador.
Tools/Connect
UnavezcargadoelDesignerenelemulador,podemos
ubicarloscontrolesdondequeramos.

__________________________________

CdigodelprogramaTimer

'Activitymodule
SubProcess_Globals
'JuanAntonioVillalpando
'juana1991@yahoo.com

'Creaeltemporizador
DimTimer1AsTimer
EndSub

SubGlobals
DimtiempoAsInt
DimcambiaAsBoolean
cambia=True
DimSeekBar1AsSeekBar
DimLabel1,Label2AsLabel
Timer1.Initialize("Timer1",500)'1000=1segundo
Timer1.Enabled=True

EndSub

SubActivity_Create(FirstTimeAsBoolean)
Activity.LoadLayout("Layout")
EndSub

SubSeekBar1_ValueChanged(ValueAsInt,UserChangedAsBoolean)
tiempo=SeekBar1.Value
Label1.text=tiempo
Timer1.Interval=tiempo
EndSub

SubTimer1_Tick
'Cadavezquepasan100milisegundos

IfcambiaThen
Label2.Color=Colors.Blue
cambia=Not(cambia)
Else
Label2.Color=Colors.Red
cambia=Not(cambia)
EndIf
EndSub

Comentariodelprograma.
HecreadounavariableBooleanllamadacambia,estavariablesolotienedosvalores:TrueyFalse.Puedocambiardeun
valoraotromediante:
cambia=Not(cambia)
Deestamaneracambiavalelocontrarioquesuvaloranterior.

TambinhecreadoelTimer1enlaSubProcessGlobalyenlaGlobal.HeInicializadosuIntervalyloheactivado
medianteEnabled=True.

Timer1.Enabled=Falsepararaeltemporizador

AlmoverelScroll(SeekBar1),cambiasuValue.SuValueloasignoatiempo.tiempoloasignoalIntervaldelTimer.Ylo
pongoenlaetiquetaLabel1.

CadaciertoInterval,elprogramarealizaalSubrutinaTimer_Tick

EnestaSubrutina,seconsultaelvalordecambia.
Sicambia=TrueEntonces
elLabel2seponeAzul.
Encasocontrario
elLabel2seponeRojo.
Ademsenlosdoscasosponeelcambiaalocontrarioqueestabamediante:
cambia=Not(cambia)

(Sepodrahaberpuestounsolocambia=Not(cambia)despusdelEndIf)
IfcambiaThen
Label2.Color=Colors.Blue

Else
Label2.Color=Colors.Red

EndIf
cambia=Not(cambia)

__________________________________
Otrocdigodeintermitente.
Otroejemplodeintermitente.EnestecasoutilizounCanvas,estepuedecontenerelementosgrficos.

Loscontrolesestncreadosmedianteelcdigo,notieneLayout.

CdigodelprogramaTimer

'JuanAntonioVillalpando
'juana1991@yahoo.com

'Intermitente.
SubProcess_Globals

EndSub

SubGlobals
DimPanel1AsPanel
DimCanvas1AsCanvas
DimSeekBar1AsSeekBar
DimcambiaAsBoolean
cambia=True
DimTimer1AsTimer

EndSub

SubActivity_Create(FirstTimeAsBoolean)

'CreaunPanel
Panel1.Initialize("Panel1")
Activity.AddView(Panel1,0,0,100%x,100%y)

'CreaunCanvas1enelPanel
Canvas1.Initialize(Panel1)
Canvas1.DrawCircle(100,100,90,Colors.Blue,True,3dip)

'Creaetiquetadealcance
SeekBar1.Initialize("SeekBar1")
SeekBar1.Max=2000
Panel1.AddView(SeekBar1,5,350,200,50)

'CreaTimer
Timer1.Initialize("Timer1",1000)'1000=1segundo
Timer1.Enabled=True

EndSub

SubActivity_Resume

EndSub

SubSeekBar1_ValueChanged(ValueAsInt,UserChangedAsBoolean)
Timer1.Interval=Value
EndSub

SubTimer1_Tick
IfcambiaThen
Canvas1.DrawCircle(100,100,90,Colors.Red,True,3dip)
Else
Canvas1.DrawCircle(100,100,90,Colors.Blue,True,3dip)
EndIf
cambia=Not(cambia)
Canvas1.Initialize(Panel1)
EndSub

__________________________________
Temporizador.Pausa.Sleep.
OtracosadistintaserahacerunaPausa,esdecirqueelprogramaquedarapausadounosmomentos,paraellosesuele
utilizarestaSubrutina...

SubPausa(segundosAsLong)
DimnowAsLong
now=DateTime.Now
DoUntil(DateTime.Now>now+(segundos*1000))
DoEvents
Loop
EndSub

EstaSubrutinasueleiralfinaldelcdigo.

Encualquierpartedelcdigopodemosllamaraestafuncindelamanera...

Pausa(3)'Estoharunapausade3segundos.

LafuncinPausa,loquehaceestomarelinstanteactual(Now)yestarhaciendounbuclehastaquesesupereeltiempodel
momentoenquecomenzlafuncinmseltiempoagregadoalafuncin(segundos).now+segundos

Sehamultiplicadopor1000,porqueelNowdevuelveeltiempoenmilisegundos.

ElDoEvents,permitequesepuedanrealizarotroseventos(porejemplo,pulsarunatecla...)mientrasestenelbucle.

__________________________________

Вам также может понравиться