Project1
标题:
请问如何突破显示图片的图片编号上限?
[打印本页]
作者:
幻隐之翼
时间:
2010-8-19 18:05
标题:
请问如何突破显示图片的图片编号上限?
想做一个战棋类一样的,但是画格子一个格子就要一个图片,而允许显示图片的上限是50...如何修改能使显示图片的上限达到200或者更高呢?
PS:在■ Game_Screen里面曾尝试过修改不过最后虽然数量改上去了,但是实际显示图片的时候却卡着显示不出来超过50的编号..请问到底该怎么做呢?这些类的实例本类的实例请参考
# $game_screen这样的应该到哪里去找呢?
或者有什么其他好方法画格子呢?
作者:
★_茄孓
时间:
2010-8-19 20:55
有心很不错啊
用事件做战旗不可取。
画格子还是用脚本
比如事件脚本也可以画只是不好处理呵呵
举个例子画满整个地图
新建个事件用事件功能里的事件脚本
$宽度= 19;$高度 = 14;@s = [];@t = 0
red = Color.new(255,0,0,255)
for i in 0..$宽度
for j in 0..$高度
@s[@t] = Sprite.new
@s[@t].bitmap = Bitmap.new(32,32)
@s[@t].bitmap.fill_rect(0,0,32,32,red)
@s[@t].x = i*32
@s[@t].y = j*32
@t += 1
end
end
复制代码
宽度高度修改看看 仅仅提供思路
作者:
BBBBB6
时间:
2010-8-19 21:03
那么标题里说的可不可以实现呢?
作者:
幻隐之翼
时间:
2010-8-19 21:43
其实我通过事件已经能达到4格以内的移动了(因为5格的移动需要1+3+5+7+9+11+9+7+5+3+1>50),所以..如果能突破我就能纯事件来做出来了
作者:
幻隐之翼
时间:
2010-8-19 21:44
另外bitmap类不太懂,还有这样画出格子了怎么取消格子呢?
作者:
★_茄孓
时间:
2010-8-19 21:58
本帖最后由 ★_茄孓 于 2010-8-19 22:05 编辑
加个小变量用把该脚本放到main前即可
class Game_Screen
attr_accessor :sprites
#--------------------------------------------------------------------------
# ● 初试化对像
#--------------------------------------------------------------------------
def initialize
@sprites = []
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@flash_color = Color.new(0, 0, 0, 0)
@flash_duration = 0
@shake_power = 0
@shake_speed = 0
@shake_duration = 0
@shake_direction = 1
@shake = 0
@pictures = [nil]
for i in 1..100
@pictures.push(Game_Picture.new(i))
end
@weather_type = 0
@weather_max = 0.0
@weather_type_target = 0
@weather_max_target = 0.0
@weather_duration = 0
end
end
复制代码
然后在事件脚本里用下面脚本来显示图片
@id = 2010
$game_screen.sprites[@id] = Sprite.new
pic = $game_screen.sprites[@id]
pic.bitmap = RPG::Cache.picture("图片名")
pic.x = 100 ; pic.y = 100
pic.zoom_x = 1
pic.zoom_y = 1
pic.opacity = 255
pic.blend_type = 0
pic.angle = 0
复制代码
里面数值相应改变下即可了。
用下面的脚本来消除图片
@id = 2010
$game_screen.sprites[@id].dispose
复制代码
下面是范例工程
Project24.rar
(271.47 KB, 下载次数: 151)
2010-8-19 21:58 上传
点击文件名下载附件
作者:
幻隐之翼
时间:
2010-8-19 22:03
谢谢,我试试看呵
作者:
幻隐之翼
时间:
2010-8-19 22:14
for i in 1..100
这个范围能扩大么?
作者:
逸豫
时间:
2010-8-19 23:17
本帖最后由 逸豫 于 2010-8-19 23:18 编辑
好吧……汝不累么……
此乃无视事件的方法:
$sprites[N] = Sprite.new
$sprites[N].bitmap = Bitmap.new("图片路径+名称")
$sprites[N].x = X
$sprites[N].y = Y
这个是很老实的方法:
class Spriteset_Map
alias diyrpg_i initialize
def initialize
diyrpg_i
for i in 100...200
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
end
end
class Game_Screen
alias diyrpg_u update
def update
diyrpg_u
unless $game_temp.in_battle
for i in 100...200
@pictures[i].update
end
end
end
alias diyrpg_i initialize
def initialize
diyrpg_i
for i in 100...200
@pictures.push(Game_Picture.new(i))
end
end
end
复制代码
调用方式在此:$game_screen.pictures[图片编号100~199].show("图片名",原点 0左上 1中心,
X,Y, X放大率,Y放大率,不透明度, 合成方式 0普通1加法2减法)
作者:
幻隐之翼
时间:
2010-8-19 23:52
关键无视事件的我不知道怎么消除图片呢= =
作者:
幻隐之翼
时间:
2010-8-20 11:52
怎么调整透明度呢= =我先试试..不知道事件页能不能用这样的代码..
作者:
幻隐之翼
时间:
2010-8-20 13:36
我已经用我自己的暴力的方法解决了= =原来是这边忘了改了..
# 生成图片
@picture_sprites = []
for i in 1..500
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
在Spriteset_Map里..
作者:
幻隐之翼
时间:
2010-8-20 14:07
不过还是谢谢大家了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1