Grafische Segmenten - delsegment

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

Grafische Segmenten - delsegment

Berichtdoor glpape » ma mei 02, 2011 2:58 pm

Aan wie dit leest - gegroet !

De laatste tijd nog eens goed naar segmenten gekeken - ik vond de helpfile verwarrend. Hier schrijf ik over <delsegment>, en volgende bijdrage zal over <redraw> gaan.

Het eerste regel voor mezelf is nu "hou het simpel". Geef segmenten zelf namen, veel inzichtelijker dan de nummering van de segmenten door Liberty. Het enige commande dat ik nodig heb om segmenten op te slaan is < #g "flush SegName" >.

Hier een voorbeeld :

Code: Selecteer alles
 10 nomainwin
    call SetWdw 200, 100, 400, 500
    open "" for graphics as #WG
    #WG "trapclose [qq]"

 20 #WG "flush"

 30 #WG "color red; size 10; down; place 100 350; circle 50"
    #WG "flush SegRed"

 40 #WG "color brown; size 12; down; place 130 290; circle 50"
    #WG "flush SegBrown"

 50 #WG "color green; size 12; down; place 160 230; circle 40"
    #WG "flush SegGreen"                                       ' SegGreen, eerste keer

 60 #WG "color blue; size 12; down; place 190 170; circle 30"
'   #WG "flush SegBlue"
    #WG "flush 3"                                              ' nummer ipv SegBlue

 70 #WG "color yellow; size 12; down; place 210 110; circle 50"
    #WG "flush SegGreen"                                       ' Note : SegGreen, nu voor ander segment

 80 #WG "color black; size 12; down; place 240 50; circle 30"
    #WG "flush SegBlack"

'   SegBlack = 222  :  notice SegBlack

 90 call Pause 1500
'   #WG "delsegment SegBlue; redraw"                           ' werkt
    #WG "delsegment 3; redraw"                                 ' nummers als SegName werkt : vreemd !

100 call Pause 1200
    #WG "delsegment SegBrown; delsegment SegBlack; redraw"     ' hurrayh !!
'   #WG "delsegment SegBrown SegBlack; redraw"                 ' werkt niet

110 ds$ = "delsegment"                                         ' ds$ : minder toetsaanslagen
    call Pause 1200
    #WG ds$; " SegGreen; redraw"                               ' werkt : gooit yellow eruit


120 wait
    [qq]
    close #WG  :  end

129
    sub Pause pp                                ' pause in milliseconds
    tt = time$("ms") : dd = date$("days")
    while  time$("ms") + 3600*24*1000*k  < tt + pp
    k = date$("days") - dd
    wend
    end sub
139
    sub SetWdw a,b,c,d                          ' sets ULX, etc
    UpperLeftX = a
    UpperLeftY = b
    WindowWidth = c
    WindowHeight = d
    end sub



Vermijd de Liberty nummers, vermijd ook zelf nummers te gebruiken als naam voor de segmenten want dan dreigt verwarring met de Liberty nummers; het kan wel regel [62] en [92].

Namen voor segmenten zijn case-sensitive, net als variabelen. Het hele systeem van segment namen valt buiten de scope van het hoofprogramma; als je bv regel [82] activeert gaat er niets mis, je kunt dezelfde naam gebruiken voor een segment en voor een variabele in één programma.

Voor meerdere segmenten moet je steeds opnieuw <delsegment> geven, [102] werkt niet; je kunt een korte varname$ gebruiken [110] [112].

Regel [20] tenslotte maakt dat SegRed alleen de rode cirkel opslaat ipv rode-cirkel-plus-het-hele-lege-grafische-scherm; in dit programma maakt het geen verschil.

En, opnieuw tenslotte, ik gebruik de oude BASIC regelnummers; geen probleem behalve als je ze voor <Sub> zet.

Vr groet,

G.L. Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Bing [Bot] en 1 gast

cron