设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2424|回复: 3
打印 上一主题 下一主题

[已经解决] 求rmvx带指针时钟脚本 转 XP脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
329
在线时间
371 小时
注册时间
2010-8-23
帖子
418
跳转到指定楼层
1
发表于 2012-8-26 13:39:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 勇敢的馒头 于 2012-8-26 15:01 编辑

http://www.66rpg.com/articles/3045

#==============================================================================
# rmvx时钟 by 沉影不器
#------------------------------------------------------------------------------
# 功能描述: 显示一个带指针的时钟
# 素材准备: 时钟指针分别命名为 hour_hand、minute_hand、second_hand
#           时钟背景命名为 clock_bg,另需要一个盖住指针的圆扣命名为 top_button
# 使用方法: Main之前插入脚本,在需要时钟的场景中调用:
#           Sprite_Clock.new(x坐标, y坐标, 不透明度)
#           (参考范例Scene_Map添加时钟)
#           脚本第18行设定控制时钟显示的变量号
#==============================================================================
# □ Sprite_Clock
#==============================================================================
class Sprite_Clock
  #--------------------------------------------------------------------------
  # ◎ 常量
  #--------------------------------------------------------------------------
  SHOW_SWITCH_ID = 1
  #--------------------------------------------------------------------------
  # ◎ 初始化对象
  #     x      : 时钟中心的 X 坐标
  #     y      : 时钟中心的 Y 坐标
  #     alpha  : 不透明度
  #--------------------------------------------------------------------------
  def initialize(x, y, alpha = 255)
    @x = x
    @y = y
    @alpha = alpha
    # 暂停标志
    @time_pause = false
    # 为指针更新初始化计数器
    @second_count = 0
    @minute_count = 0
    @hour_count = 0
    create_clock_bg
    # 本来想控制是否生成秒针
    for type in 0..2
      create_hands(type)
    end
    create_top_button
    # 初始化时间
    set_time
    # 显示标志
    change_visible
  end
  #--------------------------------------------------------------------------
  # ◎ 释放
  #--------------------------------------------------------------------------
  def dispose
    dispose_clock_bg
    dispose_hands
    dispose_top_button
  end
  #--------------------------------------------------------------------------
  # ◎ 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 按确定键时切换暂停标志
    if Input.repeat?(Input::L)
      @time_pause = !@time_pause
    end
    return if @time_pause
    # 以秒为单位更新指针
    update_time_now
    # 检查显示
    change_visible
  end
  #--------------------------------------------------------------------------
  # ◎ 设定时间
  #--------------------------------------------------------------------------
  def set_time
    time = Time.now
    @second = time.sec
    @second = 0 if @second == 60
    @minute = time.min
    @hour = time.hour
    @second_hand.angle = -@second*6
    @minute_hand.angle = -@minute*6 - @second.to_f/10
    @hour_hand.angle = -@hour*30 - (@minute.to_f/60)*30 - @second.to_f*(1.0/144)
  end
  #--------------------------------------------------------------------------
  # ◎ 生成时钟背景
  #--------------------------------------------------------------------------
  def create_clock_bg
    @clock_bg = Sprite.new
    @clock_bg.bitmap = Cache.picture("clock_bg")
    @clock_bg.opacity = @alpha
    @clock_bg.x = @x - @clock_bg.width/2
    @clock_bg.y = @y - @clock_bg.height/2
    @clock_bg.z = 999
  end
  #--------------------------------------------------------------------------
  # ◎ 生成顶端固定扣
  #--------------------------------------------------------------------------
  def create_top_button
    @top_button = Sprite.new
    @top_button.bitmap = Cache.picture("top_button")
    @top_button.opacity = @alpha
    @top_button.x = @x - @top_button.width/2
    @top_button.y = @y - @top_button.height/2
    @top_button.z = @second_hand.z + 1
  end
  #--------------------------------------------------------------------------
  # ◎ 生成指针
  #     type : 类型(0:时针; 1:分针; 2: 秒针)
  #--------------------------------------------------------------------------
  def create_hands(type)
    case type
    when 0
      @hour_hand = Sprite.new
      @hour_hand.bitmap = Cache.picture("hour_hand")
      @hour_hand.opacity = @alpha
      @hour_hand.angle_center(@x, @y)
      @hour_hand.z = @clock_bg.z + 1
    when 1
      @minute_hand = Sprite.new
      @minute_hand.bitmap = Cache.picture("minute_hand")
      @minute_hand.opacity = @alpha
      @minute_hand.angle_center(@x, @y)
      @minute_hand.z = @hour_hand.z + 1
    when 2
      @second_hand = Sprite.new
      @second_hand.bitmap = Cache.picture("second_hand")
      @second_hand.opacity = @alpha
      @second_hand.angle_center(@x, @y)
      @second_hand.z = @minute_hand.z + 1
    end
  end
  #--------------------------------------------------------------------------
  # ◎ 释放背景
  #--------------------------------------------------------------------------
  def dispose_clock_bg
    @clock_bg.dispose
  end
  #--------------------------------------------------------------------------
  # ◎ 释放指针
  #--------------------------------------------------------------------------
  def dispose_hands
    @hour_hand.dispose if @hour_hand != nil
    @minute_hand.dispose if @minute_hand != nil
    @second_hand.dispose if @second_hand != nil
  end
  #--------------------------------------------------------------------------
  # ◎ 释放顶端固定扣
  #--------------------------------------------------------------------------
  def dispose_top_button
    @top_button.dispose
  end
  #--------------------------------------------------------------------------
  # ◎ 更新指针
  #--------------------------------------------------------------------------
  def update_hands
    @hour_hand.angle -= 1.0/144
    @minute_hand.angle -= 1.0/10
    @second_hand.angle -= 6
  end
  #--------------------------------------------------------------------------
  # ◎ 更新时间
  #--------------------------------------------------------------------------
  def update_time_now
    time = Time.now
    second = time.sec
    if second != @second
      @second = second
      update_hands
    end
  end
  #--------------------------------------------------------------------------
  # ◎ 更改不透明度
  #--------------------------------------------------------------------------
  def alpha=(alpha)
    @alpha = alpha if alpha.is_a?(Integer)
  end
  #--------------------------------------------------------------------------
  # ◎ 更改可见标志
  #--------------------------------------------------------------------------
  def change_visible
    if @clock_show == $game_switches[SHOW_SWITCH_ID]
      return
    else
      @clock_show = $game_switches[SHOW_SWITCH_ID]
    end
    for i in [@clock_bg, @hour_hand, @minute_hand, @second_hand, @top_button]
      i.visible = $game_switches[SHOW_SWITCH_ID]
    end
  end
end
#==============================================================================
# ■ Sprite
#==============================================================================
class Sprite < Object
  #--------------------------------------------------------------------------
  # ◎ 设定中心旋转
  #--------------------------------------------------------------------------
  def angle_center(x, y)
    self.ox = self.width/2
    self.oy = self.height/2
    self.x = x
    self.y = y
  end
end





#自己试着改了改,发觉好像就是图片显示有点问题,可是改了还是错误,不行了求助啊!!

#谢谢大大,如果修改成功会追加分的
真正做游戏的游戏人是不会整天发帖灌水的!!!

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2012-8-26 14:18:27 | 只看该作者
好了,改完了
脚本里面这个:
  1. Sprite_Clock.new
复制代码
这个地方改XY坐标和透明度

预览图


工程:
RMXP时钟.zip (338.11 KB, 下载次数: 242)

点评

补充:图片要求和VX一样,放入Windowskin文件夹。使用的时候两个脚本一起插入。使用请参考这个工程~  发表于 2012-8-26 14:20

评分

参与人数 1梦石 +2 收起 理由
hcm + 2 认可答案

查看全部评分

回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
329
在线时间
371 小时
注册时间
2010-8-23
帖子
418
3
 楼主| 发表于 2012-8-26 15:01:56 | 只看该作者
satgo1546 发表于 2012-8-26 14:18
好了,改完了
脚本里面这个:这个地方改XY坐标和透明度

预览图

太感谢啦!!谢谢
真正做游戏的游戏人是不会整天发帖灌水的!!!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2012-10-4
帖子
193
4
发表于 2016-7-8 17:07:19 | 只看该作者
請問這功能可以用在RMVA上嗎?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-13 20:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表