Project1
标题:
图片与地图连动
[打印本页]
作者:
wbsy8241
时间:
2009-1-23 00:29
标题:
图片与地图连动
RPG2000 2003 有显示的图片与地图连动的选项
请问XP要怎么做
http://rpg.blue/web/htm/news727.htm 要这种样子的 多1个指令 [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
轩辕民
时间:
2009-1-25 01:09
说明不详细,图片与地图联动到底是指什么{/fd}
作者:
wbsy8241
时间:
2009-1-25 13:55
就是 图片对于地图的坐标固定
一般默认的是 图片对于画面的坐标固定
作者:
缺牙de兔子
时间:
2009-1-25 15:58
就是图片和地图同步滚动
而且图片的坐标==地图的坐标
作者:
wbsy8241
时间:
2009-1-26 23:25
阿类
没人帮助下吗?
作者:
ONEWateR
时间:
2009-1-27 01:55
#==============================================================================
# ■ Game_Picture
#------------------------------------------------------------------------------
# 处理图片的类。本类在类 Game_Screen ($game_screen)
# 的内部使用。
#==============================================================================
$gd = true
# 图片固定开关
class Game_Picture
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :number # 图片编号
attr_reader :name # 文件名
attr_reader :origin # 原点
attr_reader :x # X 坐标
attr_reader :y # Y 坐标
attr_reader :zoom_x # X 方向放大率
attr_reader :zoom_y # Y 方向放大率
attr_reader :opacity # 不透明度
attr_reader :blend_type # 合成方式
attr_reader :tone # 色调
attr_reader :angle # 旋转角度
#--------------------------------------------------------------------------
# ● 初始化对像
# number : 图片编号
#--------------------------------------------------------------------------
def initialize(number)
@number = number
@name = ""
@origin = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
@opacity = 255.0
@blend_type = 1
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
end
#--------------------------------------------------------------------------
# ● 显示图片
# name : 文件名
# origin : 原点
# x : X 坐标
# y : Y 坐标
# zoom_x : X 方向放大率
# zoom_y : Y 方向放大率
# opacity : 不透明度
# blend_type : 合成方式
#--------------------------------------------------------------------------
def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
@name = name
@origin = origin
@x = x.to_f
@y = y.to_f
@zoom_x = zoom_x.to_f
@zoom_y = zoom_y.to_f
@opacity = opacity.to_f
@blend_type = blend_type
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
end
#--------------------------------------------------------------------------
# ● 移动图片
# duration : 时间
# origin : 原点
# x : X 坐标
# y : Y 坐标
# zoom_x : X 方向放大率
# zoom_y : Y 方向放大率
# opacity : 不透明度
# blend_type : 合成方式
#--------------------------------------------------------------------------
def move(duration, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
@duration = duration
@origin = origin
@target_x = x.to_f
@target_y = y.to_f
@target_zoom_x = zoom_x.to_f
@target_zoom_y = zoom_y.to_f
@target_opacity = opacity.to_f
@blend_type = blend_type
end
#--------------------------------------------------------------------------
# ● 更改旋转速度
# speed : 旋转速度
#--------------------------------------------------------------------------
def rotate(speed)
@rotate_speed = speed
end
#--------------------------------------------------------------------------
# ● 开始更改色调
# tone : 色调
# duration : 时间
#--------------------------------------------------------------------------
def start_tone_change(tone, duration)
@tone_target = tone.clone
@tone_duration = duration
if @tone_duration == 0
@tone = @tone_target.clone
end
end
#--------------------------------------------------------------------------
# ● 消除图片
#--------------------------------------------------------------------------
def erase
@name = ""
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
@real_x = @x * 128
@real_y = @y * 128
if @duration >= 1
d = @duration
@x = (@x * (d - 1) + @target_x) / d
@y = (@y * (d - 1) + @target_y) / d
@zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
@zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
@opacity = (@opacity * (d - 1) + @target_opacity) / d
@duration -= 1
end
if @tone_duration >= 1
d = @tone_duration
@tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
@tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
@tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
@tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
@tone_duration -= 1
end
if @rotate_speed != 0
@angle += @rotate_speed / 2.0
while @angle < 0
@angle += 360
end
@angle %= 360
end
end
#--------------------------------------------------------------------------
# ● 获取画面 X 坐标
#--------------------------------------------------------------------------
def screen_x
# 通过实际坐标和地图的显示位置来求得画面坐标
return (@real_x - $game_map.display_x + 3) / 4 + 16
end
#--------------------------------------------------------------------------
# ● 获取画面 Y 坐标
#--------------------------------------------------------------------------
def screen_y
return (@real_y - $game_map.display_y + 3) / 4 + 32
end
end
#==============================================================================
# ■ Sprite_Picture
#------------------------------------------------------------------------------
# 显示图片用的活动块。Game_Picture 类的实例监视、
# 活动块状态的自动变化。
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# picture : 图片 (Game_Picture)
#--------------------------------------------------------------------------
def initialize(viewport, picture)
super(viewport)
@picture = picture
update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
# 图片的文件名与当前的情况有差异的情况下
if @picture_name != @picture.name
# 将文件名记忆到实例变量
@picture_name = @picture.name
# 文件名不为空的情况下
if @picture_name != ""
# 获取图片图形
self.bitmap = RPG::Cache.picture(@picture_name)
end
end
# 文件名是空的情况下
if @picture_name == ""
# 将活动块设置为不可见
self.visible = false
return
end
# 将活动块设置为可见
self.visible = true
# 设置传送原点
if @picture.origin == 0
self.ox = 0
self.oy = 0
else
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
end
# 设置活动块的坐标
if $gd
self.x = @picture.x
self.y = @picture.y
else
self.x = @picture.screen_x
self.y = @picture.screen_y
self.z = @picture.number
# 设置放大率、不透明度、合成方式
self.zoom_x = @picture.zoom_x / 100.0
self.zoom_y = @picture.zoom_y / 100.0
self.opacity = @picture.opacity
self.blend_type = @picture.blend_type
# 设置旋转角度、色调
self.angle = @picture.angle
self.tone = @picture.tone
end
end
复制代码
作者:
wbsy8241
时间:
2009-1-27 06:45
有1点问题 false 了 就卡住了 能指定个别图片吗$GD 好象对全图片的?
作者:
ONEWateR
时间:
2009-1-31 16:58
#==============================================================================
# ■ Game_Picture
#------------------------------------------------------------------------------
# 处理图片的类。本类在类 Game_Screen ($game_screen)
# 的内部使用。
#==============================================================================
# $game_screen.pictures[1].gd = false # 图片的固定开关
class Game_Picture
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :number # 图片编号
attr_reader :name # 文件名
attr_reader :origin # 原点
attr_reader :x # X 坐标
attr_reader :y # Y 坐标
attr_reader :zoom_x # X 方向放大率
attr_reader :zoom_y # Y 方向放大率
attr_reader :opacity # 不透明度
attr_reader :blend_type # 合成方式
attr_reader :tone # 色调
attr_reader :angle # 旋转角度
attr_accessor :gd
#--------------------------------------------------------------------------
# ● 初始化对像
# number : 图片编号
#--------------------------------------------------------------------------
def initialize(number)
@number = number
@name = ""
@origin = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
@opacity = 255.0
@blend_type = 1
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
@gd = true
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
@real_x = @x * 128
@real_y = @y * 128
if @duration >= 1
d = @duration
@x = (@x * (d - 1) + @target_x) / d
@y = (@y * (d - 1) + @target_y) / d
@zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
@zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
@opacity = (@opacity * (d - 1) + @target_opacity) / d
@duration -= 1
end
if @tone_duration >= 1
d = @tone_duration
@tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
@tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
@tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
@tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
@tone_duration -= 1
end
if @rotate_speed != 0
@angle += @rotate_speed / 2.0
while @angle < 0
@angle += 360
end
@angle %= 360
end
end
#--------------------------------------------------------------------------
# ● 获取画面 X 坐标
#--------------------------------------------------------------------------
def screen_x
# 通过实际坐标和地图的显示位置来求得画面坐标
return (@real_x - $game_map.display_x + 3) / 4 + 16
end
#--------------------------------------------------------------------------
# ● 获取画面 Y 坐标
#--------------------------------------------------------------------------
def screen_y
return (@real_y - $game_map.display_y + 3) / 4 + 32
end
end
#==============================================================================
# ■ Sprite_Picture
#------------------------------------------------------------------------------
# 显示图片用的活动块。Game_Picture 类的实例监视、
# 活动块状态的自动变化。
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
# 图片的文件名与当前的情况有差异的情况下
if @picture_name != @picture.name
# 将文件名记忆到实例变量
@picture_name = @picture.name
# 文件名不为空的情况下
if @picture_name != ""
# 获取图片图形
self.bitmap = RPG::Cache.picture(@picture_name)
end
end
# 文件名是空的情况下
if @picture_name == ""
# 将活动块设置为不可见
self.visible = false
return
end
# 将活动块设置为可见
self.visible = true
# 设置传送原点
if @picture.origin == 0
self.ox = 0
self.oy = 0
else
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
end
# 设置活动块的坐标
if @picture.gd
self.x = @picture.x
self.y = @picture.y
else
self.x = @picture.screen_x
self.y = @picture.screen_y
end
self.z = @picture.number
# 设置放大率、不透明度、合成方式
self.zoom_x = @picture.zoom_x / 100.0
self.zoom_y = @picture.zoom_y / 100.0
self.opacity = @picture.opacity
self.blend_type = @picture.blend_type
# 设置旋转角度、色调
self.angle = @picture.angle
self.tone = @picture.tone
end
end
复制代码
[LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
wbsy8241
时间:
2009-2-1 02:22
279 def command_231
280 # 获取图片编号
281 number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
282 # 指定方法为 [直接指定] 的情况下
283 if @parameters[3] == 0
284 x = @parameters[4]
285 y = @parameters[5]
286 # 指定方法为 [使用变量指定] 的情况下
287 else
288 x = $game_variables[@parameters[4]]
289 y = $game_variables[@parameters[5]]
290 end
291 # 显示图片
292 $game_screen.pictures[number].show(@parameters[1], @parameters[2],
293 x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
294 # 继续
295 return true
296 end
作者:
xiaotian51
时间:
2009-2-7 04:58
提示:
作者被禁止或删除 内容自动屏蔽
作者:
wbsy8241
时间:
2009-2-7 07:31
我还要让图片消失呢.
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1