zoomin / zoomout モード
zoominは、現在の画面の一部を拡大して、それが次の画面になるようなエフェクトです。
zoomoutは、逆に現在の画面が縮小して、次の画面の一部になるようなエフェクトです。
ノベルゲームのギャラリーモードに使えないかと考案してみました。
*define dim ?10[5] for %0=1 to 4 mov ?10[%0],%0*160-140 next deletemenu game *start ; 画面作成 *main bclear bg "paper.png",0 for %0=1 to 4 itoa $0,%0 lsp %0,":c;ts"+$0+".jpg",?10[%0],20 bsp %0 next if %100=0 print 1 notif %100=0 print 99,1000,"effectlib.dll/zoomout,"+$1+",20,120,90" bexec $10,%10 if %10=-1 mov %100,0:goto *main for %0=1 to 4 vsp %0,0 next itoa $0,%10 bg "s"+$0+".jpg",0 itoa $1,?10[%10] print 99,1000,"effectlib.dll/zoomin,"+$1+",20,120,90" click mov %100,1 goto *main end
引数の解説
- "effectlib.dll/"の後は、zoominかzoomoutを指定します。
- 次の四つの数字は、基準になる画面領域の左上(x, y)と領域の大きさ(w, h)になっています。
zoominは、「指定した領域を広げて次の画面にする」と考えるとわかりやすいでしょう。
応用
基準になる領域の幅と高さは、必ずしも比率は保たなくて構いません。ですので、数値の設定次第では、expandinと同じような「旧画面が縮んで消えて、その下から不動の新画面が出てきた」や、逆の表現が可能です。
今後の課題
StrechBlt()による拡大縮小って、ヘボくないですか? これなら自前でやった方がきっと綺麗。