查看: 954|回复: 2

怎么在一个区域内显示某编号的图片呢?

  [复制链接]
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-20
回帖
61
发表于 2009-5-7 17:43:19 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我想用一张图片作为向上的滚动字幕,用移动图片实现。但我只想在屏幕的某部分看见它,该怎么做?

版务信息:本贴由楼主自主结贴~
梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-5-7 18:19:55 | 显示全部楼层
先在 Main 之前插入以下脚本:
unless $PRAGMA_ONCE

class Spriteset_Map
  attr :viewport4
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    # 生成显示端口
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 200
    @viewport3.z = 5000
    @viewport4 = Viewport.new(0, 0, 640, 480)
    @viewport4.z = 200

    # 生成元件地图
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names
      @tilemap.autotiles = RPG::Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.data
    @tilemap.priorities = $game_map.priorities
    # 生成远景平面
    @panorama = Plane.new(@viewport1)
    @panorama.z = -1000
    # 生成雾平面
    @fog = Plane.new(@viewport1)
    @fog.z = 3000
    # 生成角色活动块
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport1, $game_map.events)
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
    # 生成天气
    @weather = RPG::Weather.new(@viewport1)
    # 生成图片
    @picture_sprites = []
    for i in 1..49
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_screen.pictures))
    end
    @picture_sprites.push(Sprite_Picture.new(@viewport4,
        $game_screen.pictures[50]))

    # 生成计时器块
    @timer_sprite = Sprite_Timer.new
    # 刷新画面
    update
  end
  alias dispose_old dispose if !method_defined? :dispose_old
  def dispose
    dispose_old
    @viewport4.dispose
  end
end

class Scene_Map
  attr :spriteset
end

$PRAGMA_ONCE = 1
end
这是为了让第 50 号图片在一个独立的视口中显示,并在事件中获取这个视口;
之后就可以在事件中写如下脚本:
viewport = $scene.spriteset.viewport4
# 以下四个数分别是你想要部分显示图片的矩形的 x、y 坐标、宽度、高度
viewport.rect.set(100, 100, 100, 100)
# 原点 x 和原点 y 坐标
viewport.ox = 100
viewport.oy = 100
true
然后显示图片就能看到效果了~仅限于不切换到其它 Scene
另外如果之后要让第 50 号图片恢复全屏幕显示则:
viewport = $scene.spriteset.viewport2
viewport.rect.set(0, 0, 640, 480)
viewport.ox = 0
viewport.oy = 0
即可~
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复

使用道具 举报

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-20
回帖
61
 楼主| 发表于 2009-5-8 18:54:16 | 显示全部楼层
呵呵!我昨天用了一个比较菜鸟的方法解决了这个问题。就是用一个黑框图片把那个挡住,还实现了淡入淡出的功能,吼吼!不过,谢谢你的解答了!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部