| alloc a,600000 ;sizeより大きくとってね bload "filename1",a,,128 bsave "filename2",a,strsize mes "終わり" ;実際に書き換わるのはdiskの音を聞いて判断してね stop |
| fname="filename.txt" strlen a,buf ; テキストの長さを調べる bsave fname,buf,a ; テキストファイルをセーブ |
| fname="index.html" exec fname,16 ;htmlファイルを見る |
| buffer 3,,,0 ;バッファを定義(フルカラーで初期化) picload "graphic.bmp" ;グラフィクを読みこみ gsel 0 ;カレントウィンドIDを0に戻す |
| *sgwait wait 1 getkey a,1 ;マウス左 if a!1:goto *sgwait |
■映画のエンドロール
bufferに表示しておいたものをgcopyで転送すれば出来ます。
表示位置を少しずつ変えれば動いて見えます。 (サンプル1)
ただし、この方法だと、映画のスタッフロールのような
非常に長いものには対応できません。
サンプル1
| #define YLINE 400 #define XLINE 640 screen 0,XLINE,YLINE,0 color 0,0,0:boxf buffer 2,XLINE,YLINE,0 gsel 2 color 0,0,0:boxf alloc buf,10000 buf="":bload "readme.txt",buf pos 0,0:color 255,255,255:mes buf gsel 0,2:pos 0,0 repeat YLINE pos 0,YLINE-cnt gcopy 2,0,0,XLINE,YLINE wait 1 loop stop |
こちらは表示しつつスクロールしています。
画面の一番下のラインにメッセージを表示して、
全体を少しずつ上に移動しています。(サンプル2)
表示するときに、字が出るところが見えてヤだなという場合は
別のbufferでスクロールを実行して、全体を見えるスクリーンに
転送するのがいいでしょう。
その場合redraw命令などを使うとより高速な処理が出来ます。
サンプル2
| screen 0,640,400,0 color 0,0,0:boxf color 255,255,255 alloc buf,10000 buf="":bload "readme.txt",buf notesel buf notemax bmax repeat bmax noteget tempword,cnt repeat 20 pos 0,0:gcopy 0,0,1,640,400 await 10 loop pos 0,380:mes tempword loop stop |