Project1

标题: 使用代码的传送方法后,想它直接是黑屏状态应该怎么修改 [打印本页]

作者: 掘窖人    时间: 2021-11-3 22:40
标题: 使用代码的传送方法后,想它直接是黑屏状态应该怎么修改
本帖最后由 掘窖人 于 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


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




    [FLY] ઇ 【解决了,感谢菜刀王】 ଓ[/FLY]

作者: 灯笼菜刀王    时间: 2021-11-3 22:40
掘窖人 发表于 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

搞定收工

当然, 也可以用事件处理, 在转移过去的地图里放个自动执行事件去消除掉这张黑色图片,然后暂时消失即可
作者: 任小雪    时间: 2021-11-3 23:15
本帖最后由 任小雪 于 2021-11-3 23:19 编辑

紫薯布丁
作者: 掘窖人    时间: 2021-11-3 23:22
任小雪 发表于 2021-11-3 23:15
紫薯布丁


一开始以为传送黑屏效果很好做出来,做了一下才发现要弄明白它的全部定义是真的困难
作者: xiaohuangdi    时间: 2021-11-4 03:41
不知道

$game_player.reserve_transfer(11, 10, 10,2)
wait(60)
Graphics.fadeout(120)
作者: 灯笼菜刀王    时间: 2021-11-4 10:06
本帖最后由 灯笼菜刀王 于 2021-11-4 10:09 编辑

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

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



这个同样是菜单中场所移动,并用黑屏/白屏玩效果,可以参考,笑
作者: 掘窖人    时间: 2021-11-4 13:52
xiaohuangdi 发表于 2021-11-4 03:41
不知道

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

不行的,这个我以前试过了,它会先等待1秒,然后再黑屏,最后才传送。。。
作者: 掘窖人    时间: 2021-11-4 14:12
本帖最后由 掘窖人 于 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) 后面才执行。

作者: 掘窖人    时间: 2021-11-4 16:32
灯笼菜刀王 发表于 2021-11-4 10:06
因为 reserve_transfer 只是"预约", 它要等待当前执行的特效等结束后才会执行, 而Graphics.fadeout是直接调 ...

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

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

         
作者: 掘窖人    时间: 2021-11-4 17:27
灯笼菜刀王 发表于 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】(里面什么都没写)

有没有什么方法能让它淡入成功,或其它能够执行淡入的代码?
作者: 掘窖人    时间: 2021-11-6 16:11
灯笼菜刀王 发表于 2021-11-4 16:56
手头没有VA,不知道具体怎么写, 我只能说思路, 具体怎么写你自己参考VA脚本写法

def go_map_11   

想问一下,显示图片的那张图片,用不用 dispose 这个方法来释放?

我见它有一个方法是消除图片



#--------------------------------------------------------------------------
  # ● 消除图片
  #--------------------------------------------------------------------------
  def erase
    @name = ""
  end


但它好像没有执行dispose,用这个方法消除图片会不会没有释放图片?

显示图片方法定义(后面注释我方便自已看的,不用管了,笑)

#--------------------------------------------------------------------------
  # ● 显示图片
  #--------------------------------------------------------------------------
  def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
    @name = name                     #       图片名
    @origin = origin                     #       原点
    @x = x.to_f                           #       坐标
    @y = y.to_f                           #
    @zoom_x = zoom_x.to_f        #       精灵放大x
    @zoom_y = zoom_y.to_f        #       精灵放大y
    @opacity = opacity.to_f          #       不透明度 to_f 转成 浮点数 加小数点
    @blend_type = blend_type     #初始化 基本变量
    init_target                             #初始化 移动目标
    init_tone                               #初始化 色调
    init_rotate                             #初始化 旋转角度和速度
  end




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