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

Project1

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

新人初到,写了一些小脚本,问些问题,谢谢!!!

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
跳转到指定楼层
1
发表于 2008-5-17 01:19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
前天下午看了一些RMXP自带脚本,花了2个晚上写了一些小脚本,实现了人物地图上移动以及地图切换的功能,出了点挺严重的问题,在这儿问问,谢谢!!!!!!!!!!

程序地点:
http://rpg.blue/upload_program/files/Project2_91388222.rar

其中一些map_data的TXT是地图信息的

主要问题:
1.随人物行走内存占用逐渐变大,换图后尤其明显,而且不会下降
2.Graphic和Input的工作方式
3.有关类的内存释放

之后还有一个小脚本有问题:
class Map
  def initialize
    @devil = Sprite.new
    @devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
    @devil.ox = -100
    @devil.oy = -100
    @num = 1000
  end
  def input
    if Input.press?(Input::DOWN)
      @devil.oy -= 1
      refresh
    end
    if Input.press?(Input::UP)
      @devil.oy += 1
      refresh
    end
    if Input.press?(Input::LEFT)
      @devil.ox -= 1
      refresh
    end
    if Input.press?(Input::RIGHT)
      @devil.ox += 1
      refresh
    end
  end
  def refresh
    for i in 0...@num
    end
  end
end
@map = Map.new
loop do
  Graphics.update
  @map.input
  Input.update
end
运行之后按方向建可以看到内存占用在变大,请问是其中的哪些部分不断申请的?


希望有人能给出解答,非常感谢!!!!!!!!!!!!!

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
2
 楼主| 发表于 2008-5-17 01:21:59 | 只看该作者
自杀下!!!!!!!!!!!!!!!!!
版主对此帖的评论:『连帖』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
3
 楼主| 发表于 2008-5-17 01:37:56 | 只看该作者
之前程序有点错误,已经改了,请重新下载
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

4
发表于 2008-5-17 01:59:26 | 只看该作者
   for i in 0...@num
   end
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
5
 楼主| 发表于 2008-5-17 02:08:03 | 只看该作者
它是怎样申请的?
能否释放?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
6
发表于 2008-5-17 02:49:42 | 只看该作者
LZ之前学过脚本吧···这么强大{/gg}
[url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg]http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg[/url][FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png[/url][/FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
7
 楼主| 发表于 2008-5-17 03:01:22 | 只看该作者
学过C++的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
8
 楼主| 发表于 2008-5-17 03:53:50 | 只看该作者
我发现了一些现象:
如果用代码:
class Map
  def initialize
    @devil = Sprite.new
    @devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
    @devil.ox = -100
    @devil.oy = -100
    @num = 10
      @i = 0

  end
  def input
    if Input.press?(Input::DOWN)
      @devil.oy -= 1
      @i = 0
    while @i < @num
      @i += 1
    end
    end
    if Input.press?(Input::UP)
      @devil.oy += 1
      @i = 0
    while @i < @num
      @i+= 1
    end
    end
    if Input.press?(Input::LEFT)
      @devil.ox -= 1
      @i = 0
    while @i < @num
     @i+= 1
    end
    end
    if Input.press?(Input::RIGHT)
      @devil.ox += 1
      @i = 0
    while @i < @num
      @i+= 1
    end
    end
  end
  def refresh
  end
end



@map = Map.new




loop do
  Graphics.update
  @map.input
  Input.update
end


其中变化的是for变成while,结果按键不会使内存增大,这和i是局部变量或者实变量没关系,初步断定for给i(或者i的一个映射)分配了内存,但是多次调用时并没有完全释放内存,导致内存增大,感觉这种现象很奇怪,感觉不应该发生在编译器上




附带一个小程序:
  @num = 10
  loop do
    for i in 0...@num
    end
    p 1
  end

不断点空格会发现内存也在增大,这说明和Input没什么关系,很可能是内部处理时没处理好,把for改成while并不会出现这个问题



PS :我不知道是不是就我有这种现象!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
645
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

9
发表于 2008-5-17 04:06:02 | 只看该作者
也就是說,解決問題了嗎?
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
10
 楼主| 发表于 2008-5-17 04:38:05 | 只看该作者
我把for都改成while后内存不增加,不过似乎卡了不少,我再改改看吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-29 23:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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