THE NVL Maker

 找回密码
 注册
搜索
查看: 993|回复: 2

[常见问题] 地图按钮透明部分不响应

[复制链接]

16

主题

51

帖子

0

精华

游戏开发者

积分
51
发表于 2023-5-14 20:19:10 | 显示全部楼层 |阅读模式
之前看了一个地图按钮透明部分不响应(不规则形状地图按钮)的做法【新提醒】地图按钮透明部分不响应(不规则形状地图按钮)的做法 - NVLMaker for Kirikiri - THE NVL Maker - Powered by Discuz!


我在老板的NVL里改了试过了有用

但我把老板的移植到源代码版就失效了。。。。改了好几次都没有用不知道什么原因
我是改的project里 游戏 NVL 文件夹macro_map文件

大致是这样
{
   //载入背景
        kag.back.layers[11].loadImages(%["storage"=>dic[0].bgd,"visible"=>true,"left"=>0,"top"=>0]);
   //循环描绘按钮
   for (var i=1;i<dic.count;i++)
   {
           //定义按钮位置
           kag.tagHandlers.locate(%["x" => dic["x"], "y" => dic["y"] ]);
           //创建按钮用字典
           var mapbutton = new Dictionary();
           //取得数据
           mapbutton["normal"]=dic["normal"];
           mapbutton["over"]=dic["over"];
           mapbutton["on"]=dic["on"];
           mapbutton["storage"]=dic["storage"];
           mapbutton["target"]=dic["target"];
           mapbutton["recthit"]=false;                                   --------------------------新加入的

       
           if (dic["exp"]!=void) mapbutton["exp"]=dic["exp"];
          
                if (dic["enterse"]!=void) mapbutton["enterse"]=dic["enterse"];
                if (dic["clickse"]!=void) mapbutton["clickse"]=dic["clickse"];
                if (dic["onenter"]!=void) mapbutton["onenter"]=dic["onenter"];
                if (dic["onleave"]!=void) mapbutton["onleave"]=dic["onleave"];
       
           //假如有条件,取得条件表达式
           if (dic["cond"]!=void) mapbutton["cond"]=dic["cond"];
          
               //该据点在本地图上使用到
               if (dic["use"]==1)
              {

                   //满足条件
                   if (Scripts.eval(mapbutton["cond"])==true) kag.tagHandlers.button(mapbutton);
                   //或者无需条件
                  if (mapbutton["cond"]==void) kag.tagHandlers.button(mapbutton);
              }
           }
}



但是无论是在编辑页面还是正式运行都没有效果。。。。。。。。我怀疑是不是源代码版面板层数不一样导致的
回复

使用道具 举报

16

主题

990

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
1011
发表于 2023-5-17 11:27:05 | 显示全部楼层
(1)编辑页面本来就没有效果。
(2)新版本template应该在main文件夹下面的macro_map.ks里面的CreateMapButton,我这测试了是能加上的,看看你的游戏文件夹里面是不是有两个同名文件放在了不同的文件夹下面,响应的是另外一个。
源代码版本的应该是这样的函数(和主楼看起来不是一个版本):

  1. //地图按钮
  2. function CreateMapButton(dic)
  3. {
  4.            //定义按钮位置
  5.            kag.tagHandlers.locate(%["x" => dic["x"], "y" => dic["y"] ]);
  6.            //创建按钮用字典
  7.            var mapbutton = new Dictionary();
  8.            //取得数据
  9.            mapbutton["normal"]=dic["normal"];
  10.            mapbutton["over"]=dic["over"];
  11.            mapbutton["on"]=dic["on"];
  12.            mapbutton["storage"]=dic["storage"];
  13.            mapbutton["target"]=dic["target"];
  14.         
  15.            if (dic["exp"]!=void) mapbutton["exp"]=dic["exp"];
  16.            
  17.                 if (dic["enterse"]!=void) mapbutton["enterse"]=dic["enterse"];
  18.                 if (dic["clickse"]!=void) mapbutton["clickse"]=dic["clickse"];
  19.                 if (dic["onenter"]!=void) mapbutton["onenter"]=dic["onenter"];
  20.                 if (dic["onleave"]!=void) mapbutton["onleave"]=dic["onleave"];

  21.                    mapbutton["recthit"]=false;//<=这里
  22.         
  23.            //假如有条件,取得条件表达式
  24.            if (dic["cond"]!=void) mapbutton["cond"]=dic["cond"];
  25.            
  26.                //该据点在本地图上使用到
  27.                if (dic["use"]==1)
  28.               {
  29.                //满足条件
  30.                if ((Scripts.eval(mapbutton["cond"])==true) || (mapbutton["cond"]==void))
  31.                         {
  32.                                 kag.current.addButton(mapbutton);
  33.                         }
  34.               }

  35. }
复制代码


回复

使用道具 举报

16

主题

51

帖子

0

精华

游戏开发者

积分
51
 楼主| 发表于 2023-10-6 04:59:23 | 显示全部楼层
哦原来是这样。。。。确实改的文件不对。。谢谢D大
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|nvlmaker

GMT+8, 2024-4-25 07:52 , Processed in 0.009926 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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