AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

Partagez
 

 [VX] Curseur animé

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
gelamine
Mage Lv.11
Mage Lv.11
gelamine


Masculin Age : 26
Avertissements : 3
Inscrit le : 03/04/2010
Messages : 512

[VX] Curseur animé Empty
MessageSujet: [VX] Curseur animé   [VX] Curseur animé Icon_minitimeVen 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 base

[VX] Curseur animé Cursor11

Curseur de base avec l'ordre des animations, pour les attardés -_-

[VX] Curseur animé Cursor12

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:
[VX] Curseur animé Cursor13
[VX] Curseur animé Cursor14

Bon making.

Gela
Revenir en haut Aller en bas
Brandobscure001
Seigneur Lv.18
Seigneur Lv.18
Brandobscure001


Masculin Age : 28
Inscrit le : 26/12/2010
Messages : 2220

[VX] Curseur animé Empty
MessageSujet: Re: [VX] Curseur animé   [VX] Curseur animé Icon_minitimeVen 17 Juin 2011 - 12:44

Hey c'est trés bien comme script merci Very Happy

PS Tu en trouve des script depuis tanto Very Happy
Revenir en haut Aller en bas
 

[VX] Curseur animé

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Un problème de curseur
» [RESOLU]Modification du curseur de choix
» [REQUEST] Modifier le curseur dans le jeu
» Curseur plume [Fait par therapie]
» Rubrique Anime

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Divers-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit