#============================================================================== # タイトルデモエディター # (スプライトデモ ver1.60) #   by 水夜 #  http://zenith.ifdef.jp/ #------------------------------------------------------------------------------ # タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい) #============================================================================== class Sprite_Demo < Sprite #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(index) super() @index = index @text = false begin self.bitmap = RPG::Cache.title(TITLE::DEMO[@index][0]) # 画像ファイルが存在しない場合は文字列表示に変更 rescue make_text end # 初期状態設定 self.ox = self.bitmap.width / 2 self.oy = self.bitmap.height / 2 self.x = TITLE::DEMO[@index][4] self.y = TITLE::DEMO[@index][5] self.z = 2 self.zoom_x = TITLE::DEMO[@index][6] self.zoom_y = TITLE::DEMO[@index][7] self.opacity = TITLE::DEMO[@index][8] # 更新用数値に初期値を代入 @sx = self.x @sy = self.y @szx = self.zoom_x @szy = self.zoom_y @sop = self.opacity @sa = 0 @duration = (TITLE::DEMO[@index][3] - TITLE::DEMO[@index][2]) * 1.0 @demo_time = 0 end #-------------------------------------------------------------------------- # ● テキスト作成 #-------------------------------------------------------------------------- def make_text self.bitmap = Bitmap.new(1, 1) n = TITLE::DEMO[@index][1] self.bitmap.font.name = TITLE::FONT[n][0] self.bitmap.font.size = TITLE::FONT[n][1] rect = self.bitmap.text_size(TITLE::DEMO[@index][0]) self.bitmap.dispose self.bitmap = Bitmap.new(rect.width, rect.height) self.bitmap.font.name = TITLE::FONT[n][0] self.bitmap.font.size = TITLE::FONT[n][1] # 太文字 / 斜字体 self.bitmap.font.bold = TITLE::FONT[n][4] self.bitmap.font.italic = TITLE::FONT[n][5] case TITLE::FONT[n][3] # 影文字 when 1 self.bitmap.font.color = Color.new(0, 0, 0) self.bitmap.draw_text(rect.x+2, rect.y+2, rect.width, rect.height, TITLE::DEMO[@index][0]) # 縁取り文字 when 2 self.bitmap.font.color = Color.new(0, 0, 0) self.bitmap.draw_text(rect.x+1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0]) self.bitmap.draw_text(rect.x+1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0]) self.bitmap.draw_text(rect.x-1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0]) self.bitmap.draw_text(rect.x-1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0]) end self.bitmap.font.color = TITLE::FONT[n][2] self.bitmap.draw_text(rect, TITLE::DEMO[@index][0]) @text = true end #-------------------------------------------------------------------------- # ● 表示終了フレーム #-------------------------------------------------------------------------- def end_time return TITLE::DEMO[@index][3] end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def demo_update # 数値更新 @sx += (TITLE::DEMO[@index][9] - TITLE::DEMO[@index][4]) / @duration @sy += (TITLE::DEMO[@index][10] - TITLE::DEMO[@index][5]) / @duration @szx += (TITLE::DEMO[@index][11] - TITLE::DEMO[@index][6]) / @duration @szy += (TITLE::DEMO[@index][12] - TITLE::DEMO[@index][7]) / @duration @sop += (TITLE::DEMO[@index][13] - TITLE::DEMO[@index][8]) / @duration # 更にエフェクト分の数値更新 if !@text case TITLE::DEMO[@index][1] when 1 shake(0) when 2 shake(1) when 3 turn(0) when 4 turn(1) when 5 ef_flash(0) when 6 ef_flash(1) when 7 waver # エフェクトを自分で追加する場合は # when 8 #  追加エフェクト名 # ってな具合で end end # 更新を反映 self.x = @sx self.y = @sy self.zoom_x = @szx self.zoom_y = @szy self.opacity = @sop self.angle = @sa # タイムカウントアップ @demo_time += 1 end #-------------------------------------------------------------------------- # 以下、各種プリセットエフェクト #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● エフェクト1,2 : シェイク(1:横シェイク, 2:縦シェイク) #-------------------------------------------------------------------------- def shake(type) case type when 0 @sx += 3 if @demo_time == 0 or @demo_time%12 < 6 @sx -= 3 if @demo_time%12 >= 3 when 1 @sy += 3 if @demo_time == 0 or @demo_time%12 < 6 @sy -= 3 if @demo_time%12 >= 6 end end #-------------------------------------------------------------------------- # ● エフェクト3,4 : 回転(3:左回転, 4:右回転) #-------------------------------------------------------------------------- def turn(type) case type when 0 @sa += 2 when 1 @sa -= 2 end end #-------------------------------------------------------------------------- # ● エフェクト5,6 : フラッシュ(5:白フラッシュ, 6:消滅フラッシュ) #-------------------------------------------------------------------------- def ef_flash(type) case type when 0 self.flash(Color.new(255, 255, 255) ,20) if @demo_time == 0 or @demo_time%25 == 0 when 1 self.flash(nil, 20) if @demo_time == 0 or @demo_time%25 == 0 end self.update end #-------------------------------------------------------------------------- # ● エフェクト7 : ゆらめき(っぽい) #-------------------------------------------------------------------------- def waver if @demo_time == 0 or @demo_time%100 < 50 @szx -= 0.00086 @szy += 0.00104 @sx -= 0.16 @sy -= 0.16 elsif @demo_time%100 >= 50 @szx += 0.00086 @szy -= 0.00104 @sx += 0.16 @sy += 0.16 end if @demo_time == 0 or @demo_time%6 <= 3 @sa = -0.6 elsif @demo_time%6 >= 3 @sa = 0.6 end end end