标题: 面向新手的一些system修改方法……
sarah707
亲友
Rank: 2


UID 15
精华 3
积分 825
帖子 366
阅读权限 50
注册 2006-12-20
 
发表于 2009-6-2 19:09  资料  短消息  加为好友 
面向新手的一些system修改方法……

关于kag的slider的拖动时执行函数

kag里边的slider指令用的是在messagelayer里的addslider,在current的message层上建了一个LinkSliderLayer类的子层,并且把elm里的value和onchange都赋给了这个slider的change属性,然后在onchange函数里用了一句Scripts.eval(("(" + change + ") = kag.inputTemp"))来执行的

因为这个格式是个赋值式,实际就是在拖动滑块的时候执行xxx=position这样的一句话,于是平时可以写value=f.xx之类的,最后就会在拖动时把移动值赋值给那个f.xx,如果写了一个函数名,执行的时候就会错误……因为没办法把一个值赋值给一个函数……

所以……其实把那句话改成Scripts.eval(change + "("+position+")")就可以执行函数了……想要两个并存的话,就保留change那里,在类上随便新加一个属性比如change1,在addslider的时候记得把elm.change1传给object的change1就行了……

[ 本帖最后由 sarah707 于 2009-6-4 09:48 编辑 ]

顶部
sarah707
亲友
Rank: 2


UID 15
精华 3
积分 825
帖子 366
阅读权限 50
注册 2006-12-20
 
发表于 2009-6-4 09:49  资料  短消息  加为好友 
关于kag的button的文字显示……

还是像slider一样……我说的单纯是我自己惯用的修改方式,其他人可能有不同的修改方式,本来这种东西就很自由的……我只是把这个写出来给大家一个思路参考而已……

kag的button是在current的message层上用addbutton加了一个LinkButtonLayer(新版本的KageXpress里如果用anigraphic的话就新建了船长写的LinkButtonLayerEx,一般大部分人还是用naomal over的吧……这里先不管他……)

LinkButtonLayer继承的是ButtonLayer,这种按钮图层有两种模式,一种是使用图片,不管是graphic还是normal,最后都被copy到一个层上,然后通过调整层的位置来改变显示的部分,令一种是使用色块,上边写字,不过这一种kag貌似完全没传参数过来,于是已经被大家遗忘在历史的角落了……(其实很多人连知道他的存在都谈不上就更提不上遗忘了……)

我们的目标是在kag里写[button narmal=’xx‘ over='xxx' on='xxxx' text='aa']这样的指令的时候aa能显示在button的图片上,那么得在addbutton里边加入一句参数传递“object.text=elm.text;”

但是ButtonLayer类里并没有text这个属性,于是需要在这个类里加一句var text;(其实也可以直接用那个被遗忘在历史角落的Butt_caption,不过写text这种自己命名的比较不容易忘记……)

然后text传入后写到按钮图片上去,是在drawState(s)的if(Butt_imageLoaded)里边,写drawtext就行了,居中还是靠左,字体设定,颜色之类的都随便设置,位置是0-width是normal上的字,width-width*2是over上的字……width*2-width*3是over上的字……一共要写4个位置的drawtext,有耐心的话可以把不同状态的字的颜色改变下,比如over的时候字的颜色设置的亮一点什么的……这都很自由……更有耐心的话可以把字体颜色字体规格之类的也都设成参数在kag里写……

顶部
sarah707
亲友
Rank: 2


UID 15
精华 3
积分 825
帖子 366
阅读权限 50
注册 2006-12-20
 
发表于 2009-6-4 09:50  资料  短消息  加为好友 
关于kag的rclick使用exp……

rclick的信息记入是在mainwindow的setRightClickOptions里边,在那里写一句if(elm.exp !== void)rightclickexp=elm.exp;

但是因为是刚写的……rightclickexp这个属性对于kag是不存在的……所以要在mainwindow开始写一句var rightclickexp

另外为了读档的时候这个还在,需要在internalStoreFlags里边加一句f.rightclickexp= rightclickexp;,还有internalRestoreFlags里边加一句rightclickexp = f.rightclickexp if f.rightclickexp !== void;

然后把相应右键点击的jumpToRightClickTarget里边的if(inStable)里边改成

if(rightclickexp!==void)Scripts.eval(rightclickexp);
     if(rightClickJump)
      jumpToRightClickTarget();
     else if(rightClickCall && conductor == mainConductor)
      callRightClickSubRoutine();
     else if(rightclickexp === void)
      switchMessageLayerHiddenByUser();

[ 本帖最后由 sarah707 于 2009-6-5 09:56 编辑 ]

顶部
sarah707
亲友
Rank: 2


UID 15
精华 3
积分 825
帖子 366
阅读权限 50
注册 2006-12-20
 
发表于 2009-6-6 11:48  资料  短消息  加为好友 
关于隐藏对话框后点击恢复

其实kr自带了messageLayerHiding这个属性来控制这个,但是用hideMessageLayerByUser()的话,会瞬间隐藏所有的message层,如果想做的对话框隐藏里边有layer,或者有些message层不想隐藏,或者想要加上些比如淡入淡出之类的特效,那个就不够了,所以一般来说还是单独自己写function来进行控制

比如

function hidemsg()

{tf.hidem=1;

这里写隐藏对话框的代码}

function showmsg()

{tf.hidem=0;

这里写显示对话框的代码}

自己的写的function不管是用systembutton触发也好,右键触发也好,隐藏了对话框后,一般还是要做成再点击一下就对话框出现的效果,总不能让对话在已经被隐藏的对话框上继续……

所以就要在mainwindow的onPrimaryClick()的if(!callHook(leftClickHook))的最前边,加入一段

if(tf.hidem==1)
   {
   showmsg();
   return;
   }


这样就可以了……

onPrimaryClick()的作用就是监控游戏中的点击……对他的修改并不局限在用来隐藏对话框……还有其他很多用法……请充分运用想象力和创造力吧……=_=

顶部
 



清除 Cookies - 联系我们 - [Key Fans Club] the Council of Doujin-game Development and Promotion - Archiver - WAP
Powered by Discuz! 5.5.0 © 2001-2006 Comsenz Inc.
Processed in 0.022600 second(s), 9 queries , Gzip enabled
粤ICP备05060595号
[ 当前模板 - 天高云淡 v 设计制作 - 七星论坛 v 请使用1024*768或以上分辨率浏览本模板 ]
请勿删除或修改此处版权图示