- 概要
- abs
- acos
- asc
- asin
- assert
- atan
- atan2
- background
- beep
- bgmadd
- bgmplay
- bgmstate
- bgmstop
- bind$
- binding
- box
- call
- chr$
- circle
- cls
- connect$
- connected@
- connecting
- cos
- crash
- data
- datetime@
- def animation
- def background
- def pic
- direction
- disconnect
- distance
- do
- elemtype
- else
- else if
- end
- end function
- end if
- end procedure
- exit do
- exit for
- exit procedure
- fetch@
- for
- function
- hear$
- hide
- if
- include
- inkey$
- input
- left$
- len
- let
- line
- listen
- listening
- locate
- loop
- main
- mainvar
- mainvar$
- mainvar@
- max
- mid$
- min
- move
- moving
- next
- oval
- paint
- pause
- pi
- play
- point
- pow
- procedure
- pset
- put
- random
- read
- receive@
- render
- return
- right$
- roll
- round
- scr$
- send
- sgn
- show
- sin
- speak
- speed
- sprite
- sqr
- stay
- stop
- str$
- tan
- tap
- time
- touch
- truncate
- turn
- unbind
- val
- visible
- write
- xpos
- ypos
render
働き
グラフィック画面への描画処理を行うかどうかを切り替えます。
文法
render <n>
- n - 0: 描画処理を停止する 1: 描画処理を行う
説明
グラフィック画面への描画処理は、命令が 1 つずつ実行する度に行われています。render 命令を使うと、グラフィック画面への描画処理について、一時的に停止させることができます。
render 命令のパラメーターに 0 を指定して実行すると、グラフィック画面への描画処理は行われなくなります。これにより、line 命令や circle 命令、cls 命令などグラフィック画面の表示に影響を与える命令を実行しても、実行画面に即座に反映されなくなり、Jasmine Tea が内部に持っている仮想グラフィック画面にのみ反映されます。
その後、render 命令のパラメーターに 1 を指定して実行すると、Jasmine Tea が内部に持っている仮想グラフィック画面の状態が実行画面に反映されます。そして、命令の実行ごとに即座にグラフィック画面の描画が行われるようになります。
グラフィック画面への描画処理が停止されている状態では、プログラムの実行速度が向上します。render 命令を使ってグラフィック画面への描画を停止させてから、line 命令や circle 命令などのグラフィック命令を数多く使用して、その後に render 命令にてグラフィック画面への描画処理を再開すると良いでしょう。
また、グラフィック画面で図形をアニメーションさせたい際には、cls 命令を使ってグラフィック画面を一旦全部削除してからグラフィック命令を使って図形を描く、という処理の順番でプログラムを作ることが考えられます。命令ごとにグラフィック画面への描画を行っているときは、グラフィック画面全体が一度黒くなるため、アニメーションに「ちらつき」が発生します。ちらつきを抑制したいときは、
- render 命令を使ってグラフィック画面への描画処理を停止する。
- cls 命令を使ってグラフィック画面全体を消去する。
- グラフィック命令を使って図形を描く。
- render 命令を使ってグラフィック画面への描画処理を再開する。
というプログラムを構成すると良いでしょう。
サンプルプログラム
rem render sample
do
cls
call draw_lines
pause 1000
cls
render 0
call draw_lines
render 1
pause 1000
loop
procedure draw_lines
for x=0 to 639
line (x,0)-(639-x,399),random(1,37)
next
for y=0 to 399
line (0,y)-(639,399-y),random(1,37)
next
end procedure