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

Project1

 找回密码
 注册会员
搜索
查看: 2892|回复: 16

[已经解决] 使用代码的传送方法后,想它直接是黑屏状态应该怎么修改

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
发表于 2021-11-3 22:40:35 | 显示全部楼层 |阅读模式
50星屑
本帖最后由 掘窖人 于 2021-11-6 22:12 编辑

传送方法默认脚本是这样定义的。

传送方法的调用对象:$game_player

def reserve_transfer(map_id, x, y, d = 2)
   @transferring = true
   @new_map_id = map_id
   @new_x = x
   @new_y = y
   @new_direction = d
end


#我的调用

def go_map_11    #我使用的时候是打算让它传送后停止在黑屏,然后画面正中出现地方名,但是实际执行出来,它会先黑屏完才执行传送,不知道为什么。。。
  $game_player.reserve_transfer(11, 10, 10,2)
  Graphics.fadeout(120)
end


因为我是在窗口类中执行传送指令,所以用不到事件的传送。
有没有大佬能让它,先执行完传送再黑屏?




    ઇ 【解决了,感谢菜刀王】 ଓ

最佳答案

查看完整内容

手头没有VA,不知道具体怎么写, 我只能说思路, 具体怎么写你自己参考VA脚本写法 def go_map_11 $game_player.reserve_transfer(11, 10, 10,2) 显示一张黑色图片, 用事件的显示图片方法即可, 这里脚本写法自己写, 透明度为0 移动图片, 一样用事件的方法处理, 把它的透明度提到255,持续时间你定, 这样就是淡出 $picture_delete_map_id = 11 #随便拿个变量去记录你要转移的地图ID end 这样执行时就是, 一张黑色图片显 ...

评分

参与人数 1+1 收起 理由
夏虫沉默 + 1 没想到这个问题这么复杂

查看全部评分

Lv5.捕梦者

梦石
0
星屑
37641
在线时间
5311 小时
注册时间
2006-11-10
帖子
6541
发表于 2021-11-3 22:40:36 | 显示全部楼层
掘窖人 发表于 2021-11-4 16:32
变量!=当前地图ID 这个是具体怎样写?

变量!= $game_map.map_id  是这样吗,前面的变量里面是放什么? ...

手头没有VA,不知道具体怎么写, 我只能说思路, 具体怎么写你自己参考VA脚本写法

def go_map_11   
  $game_player.reserve_transfer(11, 10, 10,2)
  显示一张黑色图片, 用事件的显示图片方法即可, 这里脚本写法自己写, 透明度为0
  移动图片, 一样用事件的方法处理, 把它的透明度提到255,持续时间你定, 这样就是淡出
  $picture_delete_map_id = 11  #随便拿个变量去记录你要转移的地图ID
end

这样执行时就是, 一张黑色图片显示出来,然后被图片盖住时进行场所移动,

然后, 你在地图刷新脚本的合适位置, 加上一句
if $picture_delete_map_id == $game_map.map_id
    图片消失
    $picture_delete_map_id = nil
end

搞定收工

当然, 也可以用事件处理, 在转移过去的地图里放个自动执行事件去消除掉这张黑色图片,然后暂时消失即可

评分

参与人数 1星屑 +200 收起 理由
alexncf125 + 200 认可答案

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2781
在线时间
441 小时
注册时间
2016-9-26
帖子
1222
发表于 2021-11-3 23:15:50 | 显示全部楼层
本帖最后由 任小雪 于 2021-11-3 23:19 编辑

紫薯布丁
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
 楼主| 发表于 2021-11-3 23:22:49 | 显示全部楼层


一开始以为传送黑屏效果很好做出来,做了一下才发现要弄明白它的全部定义是真的困难

点评

我mv的,然后,你说的效果没摸索过,更加不懂了  发表于 2021-11-4 02:31
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7808
在线时间
1832 小时
注册时间
2017-10-23
帖子
352
发表于 2021-11-4 03:41:46 | 显示全部楼层
不知道

$game_player.reserve_transfer(11, 10, 10,2)
wait(60)
Graphics.fadeout(120)
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37641
在线时间
5311 小时
注册时间
2006-11-10
帖子
6541
发表于 2021-11-4 10:06:31 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2021-11-4 10:09 编辑

因为 reserve_transfer 只是"预约", 它要等待当前执行的特效等结束后才会执行, 而Graphics.fadeout是直接调用并立即执行, 所以自然是先黑屏结束才会执行场所移动

建议用显示图片的方式去做黑屏效果, 这样也能实现你想要的"停在黑幕中显示文字",然后去用移动图片做淡入淡出效果即可


出击 (2)_compress.gif
这个同样是菜单中场所移动,并用黑屏/白屏玩效果,可以参考,笑

点评

虽然是XP做的,不过场所移动执行原理差不多咯,VA也可以用这个方法就是了  发表于 2021-11-4 12:06
这gif是用的xp抑或是va造的??  发表于 2021-11-4 10:52

评分

参与人数 2+2 收起 理由
掘窖人 + 1 能不能给个具体写法参考一下。。。单看其实.
alexncf125 + 1 TQL

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
 楼主| 发表于 2021-11-4 13:52:31 | 显示全部楼层
xiaohuangdi 发表于 2021-11-4 03:41
不知道

$game_player.reserve_transfer(11, 10, 10,2)

不行的,这个我以前试过了,它会先等待1秒,然后再黑屏,最后才传送。。。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
 楼主| 发表于 2021-11-4 14:12:13 | 显示全部楼层
本帖最后由 掘窖人 于 2021-11-4 15:13 编辑
灯笼菜刀王 发表于 2021-11-4 10:06
因为 reserve_transfer 只是"预约", 它要等待当前执行的特效等结束后才会执行, 而Graphics.fadeout是直接调 ...


我试过在传送方法前插入精灵图代码,它会在执行传送方法时帮我释放掉图片。
然后我在传送方法之后插入精灵图代码,它也是在执行传送方法时自动帮我释放掉图片。

啊,不是,好像行了。

还是不行,加图片只能够是造出一个渐黑的效果,也可以停在黑屏,但是要让它退出黑屏的话,传送代码会默认是最后一条执行,不管这条代码放在哪个位置,因此画面出现时还是在A地图,然后再传送到B地图。

我希望在画面出现时,传送已经完成了。

RUBY 代码复制
  1. def  go_map_11     
  2.          SceneManager.return    #因为是在窗口类里面用传送代码,所以加了两个后退的代码退到地图,再执行传送。
  3.          SceneManager.return
  4.          Graphics.fadeout(120)
  5.  
  6.          $Spp1=Sprite.new
  7.          $Spp1.bitmap = Cache.system("heidi1")  #全屏黑图+地方名字
  8.          $Spp1.z=210
  9.  
  10.          $game_player.reserve_transfer(11, 10, 10,2)   #传送方法
  11.  
  12.           if $Spp1.bitmap.dispose
  13.             Graphics.fadein(120)
  14.           end  
  15.       end

         
代码是这样写的,但是传送方法它会默认在 Graphics.fadein(120) 后面才执行。

点评

因为场所移动是预约, 你也一样可以预约, 准备一个变量, 当 变量 不为空 且 变量 != 当前地图ID的时候, 执行消除图片  发表于 2021-11-4 15:52
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
 楼主| 发表于 2021-11-4 16:32:44 | 显示全部楼层
灯笼菜刀王 发表于 2021-11-4 10:06
因为 reserve_transfer 只是"预约", 它要等待当前执行的特效等结束后才会执行, 而Graphics.fadeout是直接调 ...

变量!=当前地图ID 这个是具体怎样写?

变量!= $game_map.map_id  是这样吗,前面的变量里面是放什么?

         
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3093
在线时间
344 小时
注册时间
2021-10-18
帖子
157
 楼主| 发表于 2021-11-4 17:27:02 | 显示全部楼层
灯笼菜刀王 发表于 2021-11-4 16:56
手头没有VA,不知道具体怎么写, 我只能说思路, 具体怎么写你自己参考VA脚本写法

def go_map_11   

我在地图上加了个事件,【页面1】用【自动执行】(自动循环)触发,里面加了这个代码:

$picture_delete_map_id = 11
if $picture_delete_map_id == $game_map.map_id  
$Spp1.bitmap.dispose
Graphics.fadein(120)
$picture_delete_map_id = nil
end
#Graphics.fadein(120)

但是淡入效果没有执行,变成了卡顿两秒。我又在end后面加了淡入效果,也是卡顿两秒。

代码执行完就用【独立开关A】 打开【页面2】(里面什么都没写)

有没有什么方法能让它淡入成功,或其它能够执行淡入的代码?

点评

不要用Graphics.fadein, 也不要用sprite 直接用脚本写 显示图片, 移动图片 的处理就行了  发表于 2021-11-5 18:04
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 20:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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