豆浆 发表于 2023-5-14 20:19:10

地图按钮透明部分不响应

之前看了一个地图按钮透明部分不响应(不规则形状地图按钮)的做法【新提醒】地图按钮透明部分不响应(不规则形状地图按钮)的做法 - NVLMaker for Kirikiri - THE NVL Maker - Powered by Discuz!


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

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

大致是这样
{
   //载入背景
        kag.back.layers.loadImages(%["storage"=>dic.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);
              }
       }
}



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

VariableD 发表于 2023-5-17 11:27:05

(1)编辑页面本来就没有效果。
(2)新版本template应该在main文件夹下面的macro_map.ks里面的CreateMapButton,我这测试了是能加上的,看看你的游戏文件夹里面是不是有两个同名文件放在了不同的文件夹下面,响应的是另外一个。
源代码版本的应该是这样的函数(和主楼看起来不是一个版本):

//地图按钮
function CreateMapButton(dic)
{
         //定义按钮位置
         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"];
      
         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"];

                   mapbutton["recthit"]=false;//<=这里
      
         //假如有条件,取得条件表达式
         if (dic["cond"]!=void) mapbutton["cond"]=dic["cond"];
         
               //该据点在本地图上使用到
               if (dic["use"]==1)
            {
               //满足条件
               if ((Scripts.eval(mapbutton["cond"])==true) || (mapbutton["cond"]==void))
                        {
                              kag.current.addButton(mapbutton);
                        }
            }

}

豆浆 发表于 2023-10-6 04:59:23

哦原来是这样。。。。确实改的文件不对。。谢谢D大
页: [1]
查看完整版本: 地图按钮透明部分不响应