krkr进阶教程6

 

messagelayer

该教程为水螅制作,未经允许,请勿转载

 

打开messagelayer.tjs,第一个class是

class LinkButtonLayer extends ButtonLayer

buttonlayer我们以后再讲,LinkButtonLayer就是平时kag的时候用的button的类

这个类和buttonlayer的主要区别就是有个linknum参数,用来记录他是父层的messagelayer层上的第几个按钮,另外就是会受父层的selProcessLock参数影响,另外这个类里可以看到这个东西

function onMouseEnter()
{
   parent.keyLink = linkNum;
   if(!parent.selProcessLock && onenter !== void) Scripts.eval(onenter);
   super.onMouseEnter(...);
}

和这个东西

function onMouseLeave()
{
   if(!parent.selProcessLock && onleave !== void) Scripts.eval(onleave);
   super.onMouseLeave(...);
}

onenter和onleave就是在这里执行的,用buttonlayer类的话是没有这两个参数的,但是用linkbuttonlayer类的话,他和父层结合比较紧密,所以一般来说如果自己new button的话就继承buttonlayer类自己写一个class重定义onmouseleave之类的比较方便……

下边定义了几个属性不用多说啥了

再往下是选择框的类

class LinkCheckBoxLayer extends CheckBoxLayer

继承了checkboxlayer,老实说我没怎么看过checkboxlayer……这个到讲到的时候再现看吧(死)

这个文件里定义的几个用于messagelayer子层的class都是和messagelayer结合的比较紧密,可以看到每个都有linknum参数,重定义的地方也经常要提到父层状态

值得注意的是这部分

function commit()
{
   kag.inputTemp = checked;
   Scripts.eval(("(" + exp + ") = kag.inputTemp"));
}

    function onChange(checked)
    {
        if (change !== void) {
            kag.inputTemp = checked;
            Scripts.eval(("(" + change + ") = kag.inputTemp"));
        }
    }

commit和change的定义,普通的checklayer没有

再往下是文本框的类

class LinkEditLayer extends EditLayer

值得注意的是这个

function onKeyDown(key, shift, process)
{
   // 縦書きの時は右と左を入れ替える
   if(Edit_vertical)
   {
    if(key == VK_LEFT) key = VK_RIGHT;
    else if(key == VK_RIGHT) key = VK_LEFT;
   }
   super.onKeyDown(key, shift, process);
}

Edit_vertical是直接继承了父层的vertical参数的,这个在这里定义了下如果是竖着的就把左右箭头的按下交换了下

另外commit也是在这个class里定义的,普通的editlayer没有

然后是滑条的类

class LinkSliderLayer extends SliderLayer

注意commit和onchange,其中onchange我曾经专门用一篇文章(这里)详细讲过,这里就不多说了……

下边是systembutton了……

class SystemButtonLayer extends ButtonLayer

他和普通linkbuttonlayer的区别主要是没有linknum以及有个noStable参数来控制他的可使用性

再往后是

class RelativeLayer extends KAGLayer

RelativeLayer是messagelayer上的子层facelayer和namelayer用的,这两个东西其实一点都不好用,我试着用过他们然后华丽丽的放弃掉了(死)

kagexpress里边记得没有直接用kag调他们的方法,在ex2里边是可以直接在kag里使用他们的,不过不管怎样都不好用……不如自己另外建个层来得实在……|||||||||

这个class的具体内容也没啥好说的,主要是对着父层校正坐标……

再往下就是正题

class MessageLayer extends KAGLayer

嗯今天困了……就先这样吧下边的明天继续……||||||||||



TOP

访客数: 3128322
aa