赞 | 0 |
VIP | 0 |
好人卡 | 1 |
积分 | 7 |
经验 | 15263 |
最后登录 | 2017-5-29 |
在线时间 | 194 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 680
- 在线时间
- 194 小时
- 注册时间
- 2012-6-1
- 帖子
- 720
|
本帖最后由 1715063941 于 2013-2-24 11:06 编辑
话说你搞清楚没?
这个如果楼主要做图片事件的话
用事件做- #==============================================================================
- # ■ VXAce-RGSS3-18 ギャラリー by Claimh
- #------------------------------------------------------------------------------
- # 写真を表示するギャラリーを作ります
- # なお、ギャラリーの管理情報は全セーブデータで共通となります。
- #------------------------------------------------------------------------------
- # ●ギャラリー全体の表示許可
- # DataManager.garally.enable = true
- # ●写真の表示許可
- # DataManager.garally[id] = true
- # ●写真の追加(LIST以外のスナップショットなどを追加)
- # DataManager.garally.push(id, GFile.new(filename, text))
- # ●イベント等から呼び出す
- # SceneManager.call(Scene_ExGarally)
- #==============================================================================
- class GFile
- attr_reader :name
- attr_reader :text
- def initialize(filename, text="")
- @name = filename; @text = text
- end
- end
- module ExGarally
- # 写真の設定
- LIST = {
- # ID => GFile.new("ファイル名(Graphics/Pictures)", 表示文字)
- 1 => GFile.new("BlueSky", "青い空\n改行"),
- 2 => GFile.new("CloudySky1", "曇った空"),
- 3 => GFile.new("CloudySky2"),
- 4 => GFile.new("DarkSpace1"),
- 5 => GFile.new("DarkSpace2"),
- 6 => GFile.new("Mountains1"),
- 7 => GFile.new("Mountains2"),
- 8 => GFile.new("Mountains3"),
- 9 => GFile.new("Mountains4"),
- 10 => GFile.new("Mountains5"),
- 12 => GFile.new("Ocean2"),
- 11 => GFile.new("Ocean1"),
- 13 => GFile.new("SeaofClouds"),
- 14 => GFile.new("StarlitSky"),
- # 15 => GFile.new("Sunset"),
- }
-
- # ヘルプウィンドウの行数(1~3)
- HELP_LINES = 2
- end
- #==============================================================================
- # ■ ExGarally
- #==============================================================================
- module ExGarally
- #--------------------------------------------------------------------------
- # ● ギャラリーの表示有効?
- #--------------------------------------------------------------------------
- def self.enable?
- DataManager.garally.enable
- end
- #--------------------------------------------------------------------------
- # ● ファイル名
- #--------------------------------------------------------------------------
- def self.filename
- "exgallary.rvdata2"
- end
- #--------------------------------------------------------------------------
- # ● セーブの実行
- #--------------------------------------------------------------------------
- def self.save_exdata(obj)
- save_data(obj, filename)
- end
- #--------------------------------------------------------------------------
- # ● ロードの実行
- #--------------------------------------------------------------------------
- def self.load_exdata
- exist? ? load_data(filename) : Game_ExGarallyList.new
- end
- #--------------------------------------------------------------------------
- # ● ファイル削除
- #--------------------------------------------------------------------------
- def self.delete_exdata
- return unless exist?
- File.delete(filename) rescue nil
- end
- #--------------------------------------------------------------------------
- # ● ファイルの有無チェック
- #--------------------------------------------------------------------------
- def self.exist?
- FileTest.exist?(filename)
- end
- end
- #==============================================================================
- # ■ DataManager
- #==============================================================================
- class << DataManager
- #--------------------------------------------------------------------------
- # ● 各種ゲームオブジェクトの作成
- #--------------------------------------------------------------------------
- alias create_game_objects_exgrly create_game_objects
- def create_game_objects
- create_game_objects_exgrly
- load_garally
- end
- #--------------------------------------------------------------------------
- # ● セーブの実行
- #--------------------------------------------------------------------------
- alias save_game_exgarally save_game
- def save_game(index)
- r = save_game_exgarally(index)
- save_garally if r
- r
- end
- #--------------------------------------------------------------------------
- # ● ロードの実行
- #--------------------------------------------------------------------------
- alias load_game_exgrly load_game
- def load_game(index)
- r = load_game_exgrly(index)
- load_garally if r
- r
- end
- #--------------------------------------------------------------------------
- # ● ギャラリー情報load
- #--------------------------------------------------------------------------
- def load_garally
- @exgarally = ExGarally.load_exdata
- end
- #--------------------------------------------------------------------------
- # ● ギャラリー情報load
- #--------------------------------------------------------------------------
- def save_garally
- ExGarally.save_exdata(@exgarally)
- end
- #--------------------------------------------------------------------------
- # ● ギャラリー情報削除
- #--------------------------------------------------------------------------
- def delete_garally
- ExGarally.delete_exdata
- load_garally
- end
- #--------------------------------------------------------------------------
- # ● ギャラリー情報参照
- #--------------------------------------------------------------------------
- def garally
- @exgarally
- end
- end
- #==============================================================================
- # ■ Game_ExGarally
- #==============================================================================
- class Game_ExGarally
- attr_accessor :name # ファイル名
- attr_accessor :text # 表示文字
- attr_accessor :enable # 表示可否
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(file, enable=false)
- @name = file.name
- @text = file.text
- @enable = enable
- end
- end
- #==============================================================================
- # ■ Game_ExGarallyList : DataManager.garallyで参照可能
- #==============================================================================
- class Game_ExGarallyList
- LIST = ExGarally::LIST
- attr_accessor :enable
- attr_reader :size
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- clear
- end
- #--------------------------------------------------------------------------
- # ● クリア
- #--------------------------------------------------------------------------
- def clear
- @size = LIST.size
- @data = {}
- @enable = false
- end
- #--------------------------------------------------------------------------
- # ● 参照
- #--------------------------------------------------------------------------
- def [](id)
- return nil if LIST[id].nil? and @data[id].nil?
- return Game_ExGarally.new(LIST[id]) if @data[id].nil?
- @data[id]
- end
- #--------------------------------------------------------------------------
- # ● 表示許可/禁止
- #--------------------------------------------------------------------------
- def []=(id, val)
- return nil if LIST[id].nil? and @data[id].nil?
- if val
- @data[id] = Game_ExGarally.new(LIST[id]) if @data[id].nil?
- @data[id].enable = true
- elsif !@data[id].nil?
- @data.delete(id)
- end
- end
- #--------------------------------------------------------------------------
- # ● リスト
- #--------------------------------------------------------------------------
- def list
- (@data.keys+LIST.keys).uniq.sort.collect {|id| self.[](id) }
- end
- #--------------------------------------------------------------------------
- # ● 追加ギャラリー
- #--------------------------------------------------------------------------
- def push(id, name, enable=true)
- @data[id] = Game_ExGarally.new(name, enable)
- @size += 1 if LIST[id].nil?
- end
- end
- #==============================================================================
- # ■ Sprite_ExGrlyPicture
- #==============================================================================
- class Sprite_ExGrlyPicture < Sprite
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(rect=Rect.new(0,0,Graphics.width,Graphics.height))
- super(Viewport.new(rect))
- viewport.z = 100
- create_bitmap
- end
- #--------------------------------------------------------------------------
- # ● オブジェクト解放
- #--------------------------------------------------------------------------
- def dispose
- dispose_bitmap
- super
- end
- #--------------------------------------------------------------------------
- # ● ビットマップ生成
- #--------------------------------------------------------------------------
- def create_bitmap
- self.bitmap = Bitmap.new(vw, vh)
- end
- #--------------------------------------------------------------------------
- # ● ビットマップ下方
- #--------------------------------------------------------------------------
- def dispose_bitmap
- self.bitmap.dispose
- end
- #--------------------------------------------------------------------------
- # ● ピクチャ設定
- #--------------------------------------------------------------------------
- def picture(filename, enabled=true)
- dispose_bitmap
- if enabled
- self.bitmap = Cache.picture(filename)
- else
- create_bitmap
- self.bitmap.fill_rect(0,0,vw,vh,Color.new(0,0,0,160))
- # self.bitmap.draw_text(0,0, vw, vh, filename, 1)
- end
- fit_screen
- resize
- end
- #--------------------------------------------------------------------------
- # ● ズーム倍率再設定
- #--------------------------------------------------------------------------
- def resize(r=Rect.new(0,0,vw,vh))
- self.ox = bitmap.width / 2
- self.oy = bitmap.height / 2
- self.x = r.width / 2 + r.x
- self.y = r.height / 2 + r.y
- end
- #--------------------------------------------------------------------------
- # ● 画面にフィットさせる
- #--------------------------------------------------------------------------
- def bwz; (bitmap.width * zoom_x).truncate; end # ズーム後のbitmap幅
- def bhz; (bitmap.height* zoom_y).truncate; end # ズーム後のbitmap高さ
- def vw; viewport.rect.width; end
- def vh; viewport.rect.height; end
- def fit_screen(w=vw, h=vh)
- x_zoom = w * 1.0 / bitmap.width
- y_zoom = h * 1.0 / bitmap.height
- zoom = x_zoom < y_zoom ? x_zoom : y_zoom
- self.zoom_x = self.zoom_y = zoom
- end
- end
- #==============================================================================
- # ■ Sprite_ExGrlyPicture
- #==============================================================================
- class Sprite_ExGrlyPictFull < Sprite_ExGrlyPicture
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super
- hide.viewport.z = 200
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウの表示
- #--------------------------------------------------------------------------
- def show
- self.visible = true
- self
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウの非表示
- #--------------------------------------------------------------------------
- def hide
- self.visible = false
- self
- end
- #--------------------------------------------------------------------------
- # ● ピクチャ設定
- #--------------------------------------------------------------------------
- def picture(filename, enabled=true)
- dispose_bitmap
- b = Cache.picture(filename)
- r = Rect.new(0, 0, b.width, b.height)
- self.bitmap = Bitmap.new(r.width, r.height)
- self.bitmap.stretch_blt(r, b, r)
- fit_screen
- resize
- end
- end
- #==============================================================================
- # ■ Grly_Thumbnail
- #==============================================================================
- class Grly_Thumbnail
- attr_reader :item
- attr_reader :rect
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(item, rect)
- @item = item; @rect = rect
- end
- end
- #==============================================================================
- # ■ SpritesetExGrlyPictures
- #==============================================================================
- class SpritesetExGrlyPictures
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- @sprites = []
- end
- #--------------------------------------------------------------------------
- # ● オブジェクト解放
- #--------------------------------------------------------------------------
- def dispose
- dispose_sprites
- end
- #--------------------------------------------------------------------------
- # ● ピクチャスプライト生成
- #--------------------------------------------------------------------------
- def create_sprites(thumnails)
- thumnails.each do |thm|
- s = Sprite_ExGrlyPicture.new(thm.rect)
- s.picture(thm.item.name, thm.item.enable)
- @sprites.push(s)
- end
- end
- #--------------------------------------------------------------------------
- # ● ピクチャスプライト解放
- #--------------------------------------------------------------------------
- def dispose_sprites
- @sprites.each { |s| s.dispose }
- end
- #--------------------------------------------------------------------------
- # ● ピクチャスプライト更新
- #--------------------------------------------------------------------------
- def update_sprites(thumnails)
- dispose_sprites
- create_sprites(thumnails)
- end
- #--------------------------------------------------------------------------
- # ● サムネイル矩形
- #--------------------------------------------------------------------------
- def thm_rect(i)
- @sprites[i].nil? ? nil : @sprites[i].thm
- end
- end
- #==============================================================================
- # ■ Window_GrlyPicture
- #==============================================================================
- class Window_GrlyPicture < Window_Selectable
- attr_accessor :thum_sprites
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- @thum_sprites = nil
- make_list
- super(0, help_height, Graphics.width, Graphics.height-help_height)
- activate
- end
- #--------------------------------------------------------------------------
- # ● ヘルプウィンドウの高さ
- #--------------------------------------------------------------------------
- def help_height
- fitting_height(ExGarally::HELP_LINES)
- end
- #--------------------------------------------------------------------------
- # ● 桁数の取得
- #--------------------------------------------------------------------------
- def col_max
- return 3
- end
- #--------------------------------------------------------------------------
- # ● 横に項目が並ぶときの空白の幅を取得
- #--------------------------------------------------------------------------
- def spacing
- return 16
- end
- #--------------------------------------------------------------------------
- # ● 項目数の取得
- #--------------------------------------------------------------------------
- def item_max
- DataManager.garally.size
- end
- #--------------------------------------------------------------------------
- # ● 項目の高さを取得
- #--------------------------------------------------------------------------
- def item_height
- (Graphics.height - help_height - standard_padding * 2) / 2
- end
- #--------------------------------------------------------------------------
- # ● 項目を描画する矩形の取得
- #--------------------------------------------------------------------------
- def item_rect(index)
- rect = super(index)
- thm = calc_thm_rect
- rect.x += (rect.width - (thm.width + 8)) / 2
- rect.y += (rect.height - (thm.height + 8)) / 2
- rect.width = thm.width + 8
- rect.height = thm.height + 8
- rect
- end
- #--------------------------------------------------------------------------
- # ● サムネイル矩形計算
- #--------------------------------------------------------------------------
- def calc_thm_rect
- r = Rect.new
- r.width = item_width - 8
- r.height = item_height - 8
- if (Graphics.width / r.width) > (Graphics.height / r.height)
- r.height = r.width * Graphics.height / Graphics.width
- else
- r.width = r.height * Graphics.width / Graphics.height
- end
- r
- end
- #--------------------------------------------------------------------------
- # ● サムネイルの表示位置を取得
- #--------------------------------------------------------------------------
- def thum_rect(index)
- r = item_rect_for_text(index)
- r.x += self.x + standard_padding
- r.y += self.y + standard_padding
- r
- end
- #--------------------------------------------------------------------------
- # ● 先頭行のindex
- #--------------------------------------------------------------------------
- def top_i
- (top_row * col_max)
- end
- #--------------------------------------------------------------------------
- # ● 先頭行からの@index
- #--------------------------------------------------------------------------
- def top_cur_i
- (@index - (top_row * col_max))
- end
- #--------------------------------------------------------------------------
- # ● サムネイルの表示位置を取得
- #--------------------------------------------------------------------------
- def thumnails
- n = [page_item_max, item_max - top_i].min
- idxs = []
- n.times { |i| idxs.push(i) }
- idxs.collect { |i| Grly_Thumbnail.new(@list[i+top_i], thum_rect(i)) }
- end
- #--------------------------------------------------------------------------
- # ● リスト生成
- #--------------------------------------------------------------------------
- def make_list
- @list = DataManager.garally.list
- end
- #--------------------------------------------------------------------------
- # ● 選択中アイテム
- #--------------------------------------------------------------------------
- def item
- @list[@index]
- end
- #--------------------------------------------------------------------------
- # ● 選択項目の有効状態を取得
- #--------------------------------------------------------------------------
- def current_item_enabled?
- !item.nil? and item.enable
- end
- #--------------------------------------------------------------------------
- # ● ヘルプテキスト更新
- #--------------------------------------------------------------------------
- def update_help
- text = ((!item.nil? and item.enable) ? item.text : "")
- @help_window.set_text(text)
- end
- #--------------------------------------------------------------------------
- # ● カーソルの更新
- #--------------------------------------------------------------------------
- def update_cursor
- super
- @thum_sprites.update_sprites(thumnails) unless @thum_sprites.nil?
- end
- end
- #==============================================================================
- # ■ Scene_ExGarally
- #==============================================================================
- class Scene_ExGarally < Scene_Base
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- def start
- super
- create_background
- @help_window = Window_Help.new(ExGarally::HELP_LINES)
- @thumset = SpritesetExGrlyPictures.new
- @full_pict = Sprite_ExGrlyPictFull.new
- create_list_window
- end
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- def terminate
- super
- dispose_background
- @thumset.dispose
- @full_pict.dispose
- end
- #--------------------------------------------------------------------------
- # ● 背景の作成
- #--------------------------------------------------------------------------
- def create_background
- @background_sprite = Sprite.new
- @background_sprite.bitmap = SceneManager.background_bitmap
- @background_sprite.color.set(16, 16, 16, 128)
- end
- #--------------------------------------------------------------------------
- # ● 背景の解放
- #--------------------------------------------------------------------------
- def dispose_background
- @background_sprite.dispose
- end
- #--------------------------------------------------------------------------
- # ● ピクチャリストウィンドウ生成
- #--------------------------------------------------------------------------
- def create_list_window
- @list_window = Window_GrlyPicture.new
- @list_window.thum_sprites = @thumset
- @list_window.help_window = @help_window
- set_full_handler
- @list_window.select(0)
- end
- #--------------------------------------------------------------------------
- # ● フルスクリーン化用のハンドラ登録
- #--------------------------------------------------------------------------
- def set_full_handler
- @list_window.set_handler(:ok, method(:cmd_full))
- @list_window.set_handler(:cancel, method(:return_scene))
- end
- #--------------------------------------------------------------------------
- # ● サムネイルリスト用のハンドラ登録
- #--------------------------------------------------------------------------
- def set_thum_handler
- @list_window.set_handler(:ok, method(:cmd_thum))
- @list_window.set_handler(:cancel, method(:cmd_thum))
- end
- #--------------------------------------------------------------------------
- # ● フルスクリーン化
- #--------------------------------------------------------------------------
- def cmd_full
- Graphics.freeze
- @full_pict.show.picture(@list_window.item.name)
- perform_transition
- set_thum_handler
- @list_window.activate.cursor_fix = true
- end
- #--------------------------------------------------------------------------
- # ● サムネイル化
- #--------------------------------------------------------------------------
- def cmd_thum
- Graphics.freeze
- @full_pict.hide
- perform_transition
- set_full_handler
- @list_window.activate.cursor_fix = false
- end
- end
- module Title
- # 拡張コマンドへ追加
- EXCMD[3] = ["画廊", Scene_ExGarally, :garally]
- # コマンド画像ファイル(Graphics/System)
- # CMD_GRPHIC[コマンド番号] [画像1, 画像2]
- CMD_GRPHIC[3] = ["garally", "garally_s"]
- end
- #==============================================================================
- # ■ Scene_ExGarally
- #==============================================================================
- class Scene_ExGarally < Scene_Base
- #--------------------------------------------------------------------------
- # ● 呼び出し元のシーンへ戻る
- #--------------------------------------------------------------------------
- def return_scene
- super
- return unless SceneManager.scene_is?(Scene_Title)
- SceneManager.scene.prepare(Title::Scene::S_TITLE, false,
- Title::CMD_BOX.index(3))
- end
- end
- #==============================================================================
- # ■ Scene_Title
- #==============================================================================
- class Scene_Title < Scene_Base
- #--------------------------------------------------------------------------
- # ● メイン
- #--------------------------------------------------------------------------
- alias main_reload main
- def main
- DataManager.load_garally # ギャラリーのリロード
- main_reload
- end
- end
复制代码 局限性会空前强大
第一个
下面是第二个- #==============================================================================
- # ■ VXAce-RGSS3-18 ギャラリー in Menu by Claimh
- #------------------------------------------------------------------------------
- # メニューコマンドに拡張コマンド[ギャラリー]を追加します。
- #==============================================================================
- #==============================================================================
- # ■ Window_MenuCommand
- #==============================================================================
- class Window_MenuCommand < Window_Command
- #--------------------------------------------------------------------------
- # ● 独自コマンドの追加用
- #--------------------------------------------------------------------------
- alias add_original_commands_exgarally add_original_commands
- def add_original_commands
- add_original_commands_exgarally
- add_command("画廊", :garally, ExGarally.enable?) if ExGarally.enable?
- end
- end
- #==============================================================================
- # ■ Scene_Menu
- #==============================================================================
- class Scene_Menu < Scene_MenuBase
- #--------------------------------------------------------------------------
- # ● コマンドウィンドウの作成
- #--------------------------------------------------------------------------
- alias create_command_window_dictionary create_command_window
- def create_command_window
- create_command_window_dictionary
- @command_window.set_handler(:garally, method(:command_garally))
- end
- #--------------------------------------------------------------------------
- # ● コマンド[ギャラリー]
- #--------------------------------------------------------------------------
- def command_garally
- SceneManager.call(Scene_ExGarally)
- end
- end
复制代码 应该会缺啥文件
我研究下
本人天资愚笨
楼主你看却啥文件
我传给你 |
评分
-
查看全部评分
|