同人サークル ぐれーすけーる     トップページ
東方Projectは上海アリス幻楽団様の著作物です。  AIMSはD.N.A.Softwares様のゲームエンジンです。
フェードアウト/フェードインは、
     どうやって作るんだぜ☆?
サンプル
━━━━━
    これで使ってるので、ソースを参考にしてくれ☆ →  『将棋神経衰弱』


    この作品の公開されているソースから勉強したぜ☆ →  『もなこSOSバーサスアンリ』
使い方
━━━━━
<いろいろ>.lua
抜粋
    scn_transition1_start( "scn_game" )
(1) 移動先のシーン名を指定するだけだぜ☆
    これは簡単なんじゃないか☆?w
使うには
━━━━━
boot.lua
抜粋
-------------------------------------------
-- ぶらさげ親
-------------------------------------------
V    = {} -- グローバル変数の明示に使う
-- こうやってテーブルの下に分けておくと色々楽です

(2) boot.lua に、これはお約束で書いておく☆
抜粋
-------------------------------------------
-- 共有関数読込
-------------------------------------------
-- AIMSのファイルは全てprequire関数で読み込んでください
-- ビルトインのrequireも使えますが、
-- requireでは、packerでパックしたファイルの中をスキャンしてくれません

-- シーン
--─────
    prequire("s/scene/scn_transition1.lua")
(3) boot.lua で、ライブラリを読み込んでおくのは基本だな☆
    scn_transition1.lua はサンプルソースから持っていってくれ☆
中身どうなってんの
━━━━━
s/scene/scn_transition1.lua
抜粋
--[[
    Sorry, Encoding of this file is Shift-JIS.
    トランジション1  フェードアウト→フェードイン

    "むずでょLuaライブラリ for AIMS"
    (C) 2013 むずでょ(ぐれーすけーる) All Rights Reserved.
    二条項BSDライセンスに沿って、ご利用ください。Enjoy.

    同人・二次創作成分が含まれます
    ご利用の際は切り分けて、適当に書き換えてください

    改定履歴
    ━━━━━
    2014-03-31 (むずでょ) 19:55 AuSYSTEM様の『もなこSOSバーサスアンリ』を元に再作成しました。
]]


-------------------------------------------
-- トランジション使用方法
-------------------------------------------

-- これを呼ぶ。changeSceneの代わりに
function scn_transition1_start(
    next_scene -- 飛び先のシーン名
)
    V.fadeOut_thisScene = iThisScene()
    V.fadeOut_nextName  = next_scene
    addScene( "scn_transition1" )
end


-------------------------------------------
-- トランジション
-------------------------------------------

function scn_transition1_OnStart()

    local dotW =  16 -- 作成する黒い画像の横幅
    local dotH =  16 -- 作成する黒い画像の縦幅
    local scrW = 800 -- スクリーン横幅
    local scrH = 600 -- スクリーン縦幅

    -- 元のシーンを止めます
    setSceneFreeze( V.fadeOut_thisScene, true )

    -- 16x16サイズの黒い画像を作成し、画面サイズに拡大します
    G.scn_transition1 = createBlankGraphic( dotW, dotH )
    fillGraphic( G.scn_transition1, 0, 0, 0, 255)
    local hBlack = createActor( G.scn_transition1, scrW/2, scrH/2, 0 )
    addMover( hBlack, -1,  1, MOVER_SETZOOM , scrW/dotW, scrH/dotH )

    -- 不透明度は1フレーム毎に8上げて、64フレームかけて256にします
    -- その後、1フレーム毎に8下げて、64フレームかけて0にします
    addMover( hBlack, -1   ,  1, MOVER_SETALPHA,  0 )
    addMover( hBlack,  1   , 64, MOVER_ADDALPHA,  8 )
    addMover( hBlack,  1+64, 64, MOVER_ADDALPHA, -8 )
end

function scn_transition1_OnStep()

    local spanFadeout = 64 -- フェードアウト時間 単位:フレーム
    local spanFadein  = 64 -- フェードイン時間


    if     getSceneUptime() == 0+spanFadeout then
        -- フェードアウト終了、フェードイン開始
        --─────
        
        -- シーン内容を指定のものに切り替えます。シーンを再開します
        changeScene( V.fadeOut_thisScene, V.fadeOut_nextName )
        setSceneFreeze( V.fadeOut_thisScene, false )

    elseif getSceneUptime() == spanFadeout+spanFadein then
        -- フェードイン終了
        --─────

        -- このトランジション・シーンは終了させます
        closeScene()
    end
end

function scn_transition1_OnClose()
    deleteGraphic( G.scn_transition1 )
    cls()
end

(4) AuSYSTEM様の『もなこSOSバーサスアンリ』の構造をほぼそのままに
    私のプログラムに合わせて少し書き直したんだぜ☆

   またのお越しをお待ちしております