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

Project1

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

[已经解决] 请问如何突破显示图片的图片编号上限?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
跳转到指定楼层
1
发表于 2010-8-19 18:05:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想做一个战棋类一样的,但是画格子一个格子就要一个图片,而允许显示图片的上限是50...如何修改能使显示图片的上限达到200或者更高呢?
PS:在■ Game_Screen里面曾尝试过修改不过最后虽然数量改上去了,但是实际显示图片的时候却卡着显示不出来超过50的编号..请问到底该怎么做呢?这些类的实例本类的实例请参考
# $game_screen这样的应该到哪里去找呢?
或者有什么其他好方法画格子呢?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
2
发表于 2010-8-19 20:55:31 | 只看该作者
有心很不错啊
用事件做战旗不可取。
画格子还是用脚本
比如事件脚本也可以画只是不好处理呵呵
举个例子画满整个地图
新建个事件用事件功能里的事件脚本
  1. $宽度= 19;$高度 = 14;@s = [];@t = 0
  2. red = Color.new(255,0,0,255)
  3. for i in 0..$宽度
  4. for j in 0..$高度
  5. @s[@t] = Sprite.new
  6. @s[@t].bitmap = Bitmap.new(32,32)
  7. @s[@t].bitmap.fill_rect(0,0,32,32,red)
  8. @s[@t].x = i*32
  9. @s[@t].y = j*32
  10. @t += 1
  11. end
  12. end
复制代码
宽度高度修改看看 仅仅提供思路
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2010-7-5
帖子
483
3
发表于 2010-8-19 21:03:41 | 只看该作者
那么标题里说的可不可以实现呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
4
 楼主| 发表于 2010-8-19 21:43:41 | 只看该作者
其实我通过事件已经能达到4格以内的移动了(因为5格的移动需要1+3+5+7+9+11+9+7+5+3+1>50),所以..如果能突破我就能纯事件来做出来了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
5
 楼主| 发表于 2010-8-19 21:44:56 | 只看该作者
另外bitmap类不太懂,还有这样画出格子了怎么取消格子呢?

评分

参与人数 1星屑 -20 收起 理由
六祈 -20 连帖送分~~首犯减半

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
6
发表于 2010-8-19 21:58:34 | 只看该作者
本帖最后由 ★_茄孓 于 2010-8-19 22:05 编辑

加个小变量用把该脚本放到main前即可
  1. class Game_Screen
  2.   attr_accessor   :sprites
  3. #--------------------------------------------------------------------------
  4.   # ● 初试化对像
  5.   #--------------------------------------------------------------------------
  6.   def initialize
  7.     @sprites = []
  8.     @tone = Tone.new(0, 0, 0, 0)
  9.     @tone_target = Tone.new(0, 0, 0, 0)
  10.     @tone_duration = 0
  11.     @flash_color = Color.new(0, 0, 0, 0)
  12.     @flash_duration = 0
  13.     @shake_power = 0
  14.     @shake_speed = 0
  15.     @shake_duration = 0
  16.     @shake_direction = 1
  17.     @shake = 0
  18.     @pictures = [nil]
  19.     for i in 1..100
  20.       @pictures.push(Game_Picture.new(i))
  21.     end
  22.     @weather_type = 0
  23.     @weather_max = 0.0
  24.     @weather_type_target = 0
  25.     @weather_max_target = 0.0
  26.     @weather_duration = 0
  27.   end
  28. end
复制代码
然后在事件脚本里用下面脚本来显示图片

  1. @id = 2010
  2. $game_screen.sprites[@id] = Sprite.new
  3. pic = $game_screen.sprites[@id]
  4. pic.bitmap = RPG::Cache.picture("图片名")
  5. pic.x = 100 ; pic.y = 100
  6. pic.zoom_x = 1
  7. pic.zoom_y = 1
  8. pic.opacity = 255
  9. pic.blend_type = 0
  10. pic.angle = 0
复制代码
里面数值相应改变下即可了。
用下面的脚本来消除图片
  1. @id = 2010
  2. $game_screen.sprites[@id].dispose
复制代码
下面是范例工程
Project24.rar (271.47 KB, 下载次数: 151)

评分

参与人数 1星屑 +400 收起 理由
「旅」 + 400 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
7
 楼主| 发表于 2010-8-19 22:03:02 | 只看该作者
谢谢,我试试看呵
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
8
 楼主| 发表于 2010-8-19 22:14:43 | 只看该作者
    for i in 1..100
这个范围能扩大么?

评分

参与人数 1星屑 -200 收起 理由
六祈 -200 同帖内再犯~你自个儿看着办吧

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1568
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

9
发表于 2010-8-19 23:17:30 | 只看该作者
本帖最后由 逸豫 于 2010-8-19 23:18 编辑

好吧……汝不累么……
此乃无视事件的方法:
$sprites[N] = Sprite.new
$sprites[N].bitmap = Bitmap.new("图片路径+名称")
$sprites[N].x = X
$sprites[N].y = Y
这个是很老实的方法:
  1. class Spriteset_Map
  2.   alias diyrpg_i initialize
  3.   def initialize
  4.     diyrpg_i
  5.     for i in 100...200
  6.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  7.         $game_screen.pictures[i]))
  8.     end
  9.   end
  10. end
  11. class Game_Screen
  12.   alias diyrpg_u update
  13.   def update
  14.     diyrpg_u
  15.     unless $game_temp.in_battle
  16.       for i in 100...200
  17.         @pictures[i].update
  18.       end
  19.     end
  20.   end
  21.   alias diyrpg_i initialize
  22.   def initialize
  23.     diyrpg_i
  24.     for i in 100...200
  25.       @pictures.push(Game_Picture.new(i))
  26.     end
  27.   end
  28. end
复制代码
调用方式在此:$game_screen.pictures[图片编号100~199].show("图片名",原点 0左上 1中心,
X,Y, X放大率,Y放大率,不透明度, 合成方式 0普通1加法2减法)

评分

参与人数 1星屑 +300 收起 理由
「旅」 + 300 认可答案

查看全部评分

[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-19
帖子
13
10
 楼主| 发表于 2010-8-19 23:52:34 | 只看该作者
关键无视事件的我不知道怎么消除图片呢= =

点评

$sprites[N].dispose 好吧……刚刚手滑按错了  发表于 2010-8-20 00:04
@sprites[N].dispose  发表于 2010-8-20 00:03
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 05:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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