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

Project1

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

这个脚本怎样写才不会卡?

 关闭 [复制链接]

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
跳转到指定楼层
1
发表于 2009-1-22 01:49:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

  1. class Arpg_Actor
  2. #--------------------------------------------------------------------------
  3. # ● 定义实例变量
  4. #--------------------------------------------------------------------------
  5.   attr_accessor :Actor_id                 # 角色ID
  6.   attr_accessor :Actor_action             # 角色动作 0:什么都不做 1:移动 2:攻击 3:跳跃 4:中击 5:吟唱 6:死亡   
  7.   attr_accessor :Actor_look               # 角色的面向
  8.   attr_accessor :Actor_MapId              # 角色所在地图
  9.   attr_accessor :Actors_x                 # 角色的x坐标
  10.   attr_accessor :Actors_y                 # 角色的y坐标
  11. #--------------------------------------------------------------------------
  12. # ● 初始化对像
  13. #--------------------------------------------------------------------------
  14.   def initialize
  15.    
  16.     @Actor_id = $game_party.actors[0].id
  17.     @Actor_action=0
  18.     @Actor_look=8
  19.     @Actor_MapId=1
  20.     @Actors_x=0
  21.     @Actors_y=0
  22.   end  
  23.   def Actor_message
  24.     @actor_ms=Window_Selectable.new(0,0,0,0)
  25.     @actor_ms.update
  26.     @devil = Sprite.new
  27.     @devil.x = 0
  28.     @devil.y = 310
  29.     @devil.bitmap = RPG::Cache.picture("状态栏")
  30.     @[email protected]
  31.     message_refresh
  32.     RPG::Cache.clear
  33.     Graphics.update
  34.   end
  35.   #--------------------------------------------------------------------------
  36. # ● 获得状态栏信息
  37. #--------------------------------------------------------------------------
  38.   def message_refresh
  39.     @b = Sprite.new
  40.     @b.x = -30
  41.     @b.y = 380
  42.     @b.bitmap = Bitmap.new("Graphics/Battlers/"+$game_actors[@Actor_id].battler_name.to_s)
  43.     @actor_ms.windowskin.draw_text(1, 30, 120, 32,$game_actors[@Actor_id].name, 0)
  44.     @actor_ms.windowskin.draw_text(90, 120, 120, 32,"HP:", 0)
  45.     @actor_ms.windowskin.draw_text(90, 140, 120, 32,"SP:", 0)
  46.     @actor_ms.windowskin.draw_text(122, 120, 120, 32,getHP.to_s, 0)
  47.   end
  48. #--------------------------------------------------------------------------
  49. # ● 获得角色HP
  50. #--------------------------------------------------------------------------  
  51.   def getHP
  52.     return $game_actors[@Actor_id].maxhp
  53.   end

  54. end
复制代码

上面这段脚本我在Scene_Map里创建了一个实例
并且在下面这个地方调用

  1. # 不在主角移动中的情况下
  2.     unless $game_player.moving?
  3.       @arpg_actor.Actor_message
  4.       # 执行各种画面的调用
  5.       if $game_temp.battle_calling
  6.         call_battle
  7.       elsif $game_temp.shop_calling
  8.         call_shop
  9.       elsif $game_temp.name_calling
  10.         call_name
  11.       elsif $game_temp.menu_calling
  12.         call_menu
  13.       elsif $game_temp.save_calling
  14.         call_save
  15.       elsif $game_temp.debug_calling
  16.         call_debug
  17.       end
  18.     end
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 调用战斗
  22.   #--------------------------------------------------------------------------
复制代码

不断刷新Actor_message里的数据
虽然放在这个位置刷新 但是还是有轻微的卡
请问高手们 这里还有更好的地图刷新方法吗?
@arpg_actor.Actor_message在地图显示的是角色的信息

这是范例让大家看看是不是稍微有点卡{/tp}
http://rpg.blue/upload_program/d ... ��息_112989329.rar

版务信息:本贴由楼主自主结贴~
↓这是啥-- [IMG][/IMG]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2006-10-26
帖子
29
2
发表于 2009-1-22 02:38:03 | 只看该作者
怎么我不卡
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
3
 楼主| 发表于 2009-1-22 02:55:56 | 只看该作者
有一点点卡 我自己写的 我知道
你把@arpg_actor.Actor_message这段去掉就看出区别了
就是走4~5步就停顿那么0.1秒
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

4
发表于 2009-1-23 21:22:44 | 只看该作者
话说大写开头的变量看着真是别扭的很啊…………

每次都要新建,每次都要refresh,自然会卡了哦,你应该先弄明白这个东西在什么情况下需要整个重新绘制,什么情况下需要部分重绘,当你搞明白这些以后,你再另写一个叫做update的方法就会不卡了。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
5
发表于 2009-1-23 21:26:05 | 只看该作者
楼上写的太好了,学习了
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1040
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

6
发表于 2009-1-23 21:26:54 | 只看该作者
減少load_bitmap——bitmap.new()的次數。load_bitmap是十分耗費時間的語句,九成的腳本都卡在這里。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
7
 楼主| 发表于 2009-1-23 22:19:35 | 只看该作者
我就是想了解下怎样才能在对象只创建一次的情况下可以
在原图追加新的图片
这个是我目前还无法参透的
所以我只能每次都只能做 x=Bitmap.new --
以下引用亿万星辰于2009-1-23 13:22:44的发言:
话说大写开头的变量看着真是别扭的很啊…………

话说RUBY有变量写法的规范么{/hx}
我只知道方法名大写开头会报错
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

8
发表于 2009-1-23 22:22:44 | 只看该作者
以下引用缺牙de兔子于2009-1-23 14:19:35的发言:

我就是想了解下怎样才能在对象只创建一次的情况下可以
在原图追加新的图片
这个是我目前还无法参透的

blt
stretch_blt
尽量避免每帧进行refresh和load_bitmap
变量监控。if和赋值相对于refresh是相当便宜的。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
9
 楼主| 发表于 2009-1-23 22:54:14 | 只看该作者

blt
stretch_blt
尽量避免每帧进行refresh和load_bitmap
变量监控。if和赋值相对于refresh是相当便宜的。

3Q此贴留给想学习Bitmap类的后人看
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-18 19:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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