- Coco'Staffeux retraité
- Nombre de messages : 6578
Age : 31
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance
Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux
N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
Curseur animé
Mer 21 Juil 2010 - 16:14
Curseur animé
Auteur : KGC
Instructions pour modifier votre curseur animé :
- Code:
ANIMATION_FILE = "CursorAnimation"
- Code:
FRAME_COUNT = 12
- Code:
ANIMATION_WAIT = 4
Instructions pour créer votre curseur animé :
Il n'y a aucune limitation sur la taille de votre curseur, mais votre fichier image doit être découpé en 8 colonnes, et chaque image de votre curseur doit être compris dans un carré (la taille du coté du carré varie selon la taille totale du fichier curseur).
Curseur de base :
Curseur de base avec l'ordre d'animation (pour l'explication) :
Le script :
- Spoiler:
- 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 :
- Spoiler:
- Shadow of LifeMembre
- Nombre de messages : 870
Age : 28
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman
Soumis ^^
Date d'inscription : 13/09/2009
Re: Curseur animé
Mer 21 Juil 2010 - 16:38
Coco' ! tu es en forme aujourd'hui ! ><
Ah moins que ce ne soit le site où tu as trouvé tout les scripts de KGC ? =P
Ah moins que ce ne soit le site où tu as trouvé tout les scripts de KGC ? =P
- Coco'Staffeux retraité
- Nombre de messages : 6578
Age : 31
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance
Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux
N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
Re: Curseur animé
Mer 21 Juil 2010 - 16:45
Bah nan, j'ai juste posté le script KGC Large Party, et comme j'étais bien lancé, j'ai posté celui ci, tiré de ma boite à scripts perso'
- Black'Membre
- Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010
Re: Curseur animé
Jeu 29 Juil 2010 - 15:31
Tu l'as choppé dans le Pack de script KGC , hein ?
Tient, peut-être qu'un tuto sur "comment faire son propre curseur animé" serait la bienvenue sur ce forum, je médite ! Peut-être un , que dis-je LE grand retour de la main sélectionneuse de Square Enix ??
Merci du partage !
Thank's for the Sharing
Danke für die ... partage
Tient, peut-être qu'un tuto sur "comment faire son propre curseur animé" serait la bienvenue sur ce forum, je médite ! Peut-être un , que dis-je LE grand retour de la main sélectionneuse de Square Enix ??
Merci du partage !
Thank's for the Sharing
Danke für die ... partage
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum