Project1

标题: 【又是图片】请问用精灵建立图片如何改变图片位置 [打印本页]

作者: 会激昂的暗黑    时间: 2018-10-19 22:17
标题: 【又是图片】请问用精灵建立图片如何改变图片位置
尝试用a.x=1
a.y=2(如果变量等于几怎样怎样)
这种来写,但是失败了。虽然是同一个精灵但是精灵会建立两次?后面发现第一次的图片会消失,但是要过一段时间。
也就是说,处理时间过长?
以及,不管用全局变量还是局部变量都会这样
求教!
作者: 文雅夕露    时间: 2018-10-19 22:40
@background = Sprite.new
@background.bitmap = RPG::Cache.picture("文件名")
@background.x = 100
@background.y = 100
@background.z = 100
不考虑实例变量吗?
作者: 会激昂的暗黑    时间: 2018-10-19 22:58
文雅夕露 发表于 2018-10-19 22:40
@background = Sprite.new
@background.bitmap = RPG::Cache.picture("文件名")
@background.x = 100

并不是没有考虑。但是我想做出一种按下方向键图片改变坐标的方法。
以前用的是显示图片,脚本中因为先前背景图用的是精灵,所以索性也用精灵了。目前有一种蠢方法,就是按下方向键改变变量,然后刷新,判定变量
然后改变坐标。但是。。这样改变坐标确实可以重新显示图片。但是!先前的图片不会消失!(会消失的,但是要过好久才行)我先写了一句nil
作者: ppspssss    时间: 2018-10-19 23:34
@background = Sprite.new if @background == nil #这样Sprite的指針就不会變化了, 你这样不管的話会生成一个新指針, 所以舊有的会消失
作者: 灯笼菜刀王    时间: 2018-10-20 15:03
本帖最后由 灯笼菜刀王 于 2018-10-20 15:06 编辑

猜测你是这样写的
a = Sprite.new
a.x = 5

然后,移动坐标的时候,这样写
a = Sprite.new
a.x = 10

对吧?

这样写的话, 虽然你用的是同一个变量,但是却会重复生成新的精灵, 前一个精灵没update所以隔一段时间后自己消失

要移动同一个精灵的坐标, 不需要再次生成 sprite 实例, 直接调用变量坐标就可以了,
a.x = 10
这样写就OK

注意调用不在同一个方法内的话, sprite的变量要使用实例变量或者全局变量
作者: 张咚咚    时间: 2018-10-20 15:37
变量A = A实例对象
变量A = B实例对象
变量A指向B实例对象,那A实例对象没被指着了,GC会一段时间后自动回收掉没任何引用的对象




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1