Mage Lv.11
Age : 26 Avertissements : 3 Inscrit le : 03/04/2010 Messages : 512
| Sujet: [VX] Curseur animé Ven 17 Juin 2011 - 12:39 | |
| Script: Curseur animé Créateur: KGC Utilité: Permet de supporter un curseur animé. Je ne sais pas si ce message a été posté, j'ai balayé la section "menu" sans le trouver. Si c'est le cas, informez-moi au plus vite. Instructions pour modifier les caractéristiques de votre curseur animéLe nom du fichier de votre curseur animé, que vous devez préalablement placer dans le dossier Graphics/System de votre projet : - Code:
-
ANIMATION_FILE = "CursorAnimation" Le nombre de frames dans votre animation : - Code:
-
FRAME_COUNT = 12 Le nombre de frames entre chaque image de votre animation : - Code:
-
ANIMATION_WAIT = 4 Instructions pour créer votre curseur animéIl n'y a aucune limitation sur la taille de votre fichier, qui doit être découpé en huit colonnes, et chaque image de votre curseur doit être comprise dans un carré (qui varie selon la taille du fichier), mais chaque carré doit être égal. Curseur de baseCurseur de base avec l'ordre des animations, pour les attardés -_-Le script: - Code:
-
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆ カーソルアニメーション - KGC_CursorAnimation ◆ VX ◆ #_/ ◇ Last update : 2008/04/01 ◇ #_/---------------------------------------------------------------------------- #_/ カーソルの位置にアニメーションを表示します。 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#============================================================================== # ★ カスタマイズ項目 - Customize ★ #==============================================================================
module KGC module CursorAnimation # ◆ アニメ表示 ON/OFF を切り替えるスイッチ ID # この ID のスイッチがオンの間、カーソルアニメが表示されます。 SWITCH_ID = 20 # ◆ 最初からカーソルアニメを表示する # true : タイトルなどでもアニメを表示します。 # false : ゲーム中にスイッチを切り替えるまで表示しません。 DEFAULT_ANIMATION = true
# ◆ アニメファイル名 # "Graphics/System" から読み込む。 ANIMATION_FILE = "CursorAnimation" # ◆ アニメーションのフレーム数 FRAME_COUNT = 12 # ◆ アニメーションウェイト # 数値が大きいほどアニメが遅くなる。 ANIMATION_WAIT = 4
# ◆ 不透明度 OPACITY = 224 # ◆ 合成方法 # 0..通常 1..加算 2..減算 BLEND_TYPE = 1 # ◆ 基準位置 # 0..上 1..中央 2..下 BASE_POSITION = 1 # ◆ 表示位置補正 [x, y] POSITION_REV = [-4, 0] end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil $imported["CursorAnimation"] = true
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#============================================================================== # ■ Window_Base #==============================================================================
class Window_Base < Window #-------------------------------------------------------------------------- # ○ クラス変数 #-------------------------------------------------------------------------- @@__cursor_animation = nil # カーソルアニメ #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 # width : ウィンドウの幅 # height : ウィンドウの高さ #-------------------------------------------------------------------------- alias initialize_KGC_CursorAnimation initialize def initialize(x, y, width, height) initialize_KGC_CursorAnimation(x, y, width, height)
@@__cursor_animation.add_window(self) end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias dispose_KGC_CursorAnimation dispose unless $@ def dispose @@__cursor_animation.remove_window(self)
dispose_KGC_CursorAnimation end #-------------------------------------------------------------------------- # ○ カーソルアニメを表示 #-------------------------------------------------------------------------- def self.show_cursor_animation @@__cursor_animation.visible = true @@__cursor_animation.update end #-------------------------------------------------------------------------- # ○ カーソルアニメを隠す #-------------------------------------------------------------------------- def self.hide_cursor_animation @@__cursor_animation.visible = false @@__cursor_animation.update end #-------------------------------------------------------------------------- # ○ カーソルアニメを更新 #-------------------------------------------------------------------------- def self.update_cursor_animation @@__cursor_animation.update end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#============================================================================== # □ Sprite_CursorAnimation #------------------------------------------------------------------------------ # カーソルアニメーション用の処理を追加したスプライトのクラスです。 #==============================================================================
class Sprite_CursorAnimation < Sprite #-------------------------------------------------------------------------- # ● オブジェクト初期化 # viewport : ビューポート #-------------------------------------------------------------------------- def initialize(viewport = nil) super(viewport) @duration = 0 @frame_count = 0 self.bitmap = Cache.system(KGC::CursorAnimation::ANIMATION_FILE) self.src_rect.width = bitmap.width / 8 self.src_rect.height = bitmap.height / ([KGC::CursorAnimation::FRAME_COUNT - 1, 0].max / 8 + 1) self.ox = src_rect.width / 2 self.oy = src_rect.height / 2 self.opacity = KGC::CursorAnimation::OPACITY self.blend_type = KGC::CursorAnimation::BLEND_TYPE end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super return unless visible
@frame_count += 1 return if @frame_count % KGC::CursorAnimation::ANIMATION_WAIT != 0
@frame_count = 0 @duration -= 1 if @duration < 0 @duration = KGC::CursorAnimation::FRAME_COUNT - 1 end update_animation end #-------------------------------------------------------------------------- # ○ アニメーションを更新 #-------------------------------------------------------------------------- def update_animation self.src_rect.x = src_rect.width * (@duration % 8) self.src_rect.y = src_rect.height * (@duration / 8) end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#============================================================================== # □ Cursor_Animation #------------------------------------------------------------------------------ # カーソル周りのアニメーションを扱うクラスです。 #==============================================================================
class Cursor_Animation #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :visible #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- def initialize @visible = false
@viewport = Viewport.new(0, 0, 640, 480) @windows = [] @target_sprite = Sprite_CursorAnimation.new(@viewport) @active_window = nil
@viewport.visible = false @viewport.z = 10000 end #-------------------------------------------------------------------------- # ○ 破棄 #-------------------------------------------------------------------------- def dispose @target_sprite.dispose @viewport.dispose end #-------------------------------------------------------------------------- # ○ ウィンドウ追加 #-------------------------------------------------------------------------- def add_window(*window) @windows |= window.find_all { |w| w.is_a?(Window_Selectable) || w.is_a?(Window_SaveFile) } @windows.flatten! end #-------------------------------------------------------------------------- # ○ ウィンドウ削除 #-------------------------------------------------------------------------- def remove_window(*window) @windows -= window end #-------------------------------------------------------------------------- # ○ フレーム更新 #-------------------------------------------------------------------------- def update @viewport.update @target_sprite.update
# 座標調整 dest_x, dest_y = get_cursor_pos if @target_sprite.x != dest_x if (dest_x - @target_sprite.x).abs < 4 @target_sprite.x = dest_x else dist = (dest_x - @target_sprite.x) / 4 dist = (dist > 0 ? [dist, 4].max : [dist, -4].min) @target_sprite.x += dist end end if @target_sprite.y != dest_y if (dest_y - @target_sprite.y).abs < 4 @target_sprite.y = dest_y else dist = (dest_y - @target_sprite.y) / 4 dist = (dist > 0 ? [dist, 4].max : [dist, -4].min) @target_sprite.y += dist end end end #-------------------------------------------------------------------------- # ○ カーソル位置取得 # [x, y] の形で返す。 #-------------------------------------------------------------------------- def get_cursor_pos dx = 0 dy = 0 # アクティブウィンドウを取得 unless window_active?(@active_window) @active_window = search_active_window end
# アクティブウィンドウがなければ非表示 if @active_window == nil || !$game_switches[KGC::CursorAnimation::SWITCH_ID] @viewport.visible = false dx = Graphics.width / 2 dy = Graphics.height / 2 return [dx, dy] end @viewport.visible = @visible
# カーソル位置を計算 rect = @active_window.cursor_rect dx = rect.x + 16 + KGC::CursorAnimation::POSITION_REV[0] dy = rect.y + 16 + KGC::CursorAnimation::POSITION_REV[1] vp = @active_window.viewport if vp != nil dx += vp.rect.x - vp.ox dy += vp.rect.y - vp.oy end dx += @active_window.x dy += @active_window.y case KGC::CursorAnimation::BASE_POSITION when 0 # 上 dy += @target_sprite.oy when 1 # 中央 dy += rect.height / 2 when 2 # 下 dy += rect.height - @target_sprite.oy end return [dx, dy] end #-------------------------------------------------------------------------- # ○ ウィンドウのアクティブ状態判定 #-------------------------------------------------------------------------- def window_active?(window) return false if window == nil return false if window.disposed?
if window.is_a?(Window_Selectable) return true if window.active elsif window.is_a?(Window_SaveFile) return true if window.selected end return false end #-------------------------------------------------------------------------- # ○ アクティブウィンドウを探す #-------------------------------------------------------------------------- def search_active_window return @windows.find { |w| if !w.visible false elsif w.is_a?(Window_Selectable) w.active && w.index >= 0 elsif w.is_a?(Window_SaveFile) w.selected else false end } end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#============================================================================== # ■ Scene_Base #==============================================================================
class Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- alias start_KGC_CursorAnimation start def start Window_Base.show_cursor_animation
start_KGC_CursorAnimation end #-------------------------------------------------------------------------- # ● 終了前処理 #-------------------------------------------------------------------------- alias pre_terminate_KGC_CursorAnimation pre_terminate def pre_terminate Window_Base.hide_cursor_animation
pre_terminate_KGC_CursorAnimation end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_KGC_CursorAnimation update def update update_KGC_CursorAnimation
Window_Base.update_cursor_animation end end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#============================================================================== # ■ Scene_Title #==============================================================================
if KGC::CursorAnimation::DEFAULT_ANIMATION
class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias create_game_objects_KGC_CursorAnimation create_game_objects def create_game_objects create_game_objects_KGC_CursorAnimation
$game_switches[KGC::CursorAnimation::SWITCH_ID] = true end end
end # <-- if KGC::CursorAnimation::DEFAULT_ANIMATION
class Window_Base < Window @@__cursor_animation = Cursor_Animation.new end Screens: Bon making. Gela |
|
Seigneur Lv.18
Age : 28 Inscrit le : 26/12/2010 Messages : 2220
| Sujet: Re: [VX] Curseur animé Ven 17 Juin 2011 - 12:44 | |
| Hey c'est trés bien comme script merci PS Tu en trouve des script depuis tanto |
|