什么是渐变

 渐变是一种消耗一定时间替换画面内容的方式。吉里吉里2的渐变可以对层单体进行,也可以对层的继承树进行。
 如果指定了层的切换源,则将交换两个层。
 如果是前者,则将相应的层替换,如果是后者,则层的树结构将完全替换。
 请参考Layer.beginTransition 方法。

 吉里吉里2使用「渐变处理程序」的管理渐变。它们是通过 Layer.beginTransition 方法的 name 参数指定的,现在版本中吉里吉里本体内有3个。也可以通过插件进行扩展。

 下面介绍吉里吉里本体内置的渐变处理程序和扩展渐变插件(extrans.dll)中可用的渐变处理程序。

可指定的选项


使用TJS2时
 以字典的形式指定Layer.beginTransition方法的options参数。例如,如果为"universal" 渐变指定 vague=100 time=2000 rule=rule1.png,则在options参数中指定以下内容。

%[vague:100, time:2000, rule:"rule1.png"]
使用KAG时
 KAG的情况下,将选项直接描述为trans标记的属性。但是,除了选项以外,还有其他可指定的属性(layer,children,method属性),用这些属性一起指定选项。
 例如,要在背景层中(包括子层)执行 vague=100 time=2000 rule=rule1.png 的 "universal" 渐变,,请执行以下操作。

@trans layer=base children=true method=universal vague=100 time=2000 rule=rule1.png

 另外,例如希望 "wave" 渐变使用 maxomega=0.1 maxh=20 选项,请执行以下操作。

@trans layer=base children=true method=wave maxomega=0.1 maxh=20

内置的渐变处理器

 吉里吉里在本体内有以下3个渐变处理程序。

crossfade
 "crossfade" 渐变(交叉淡入渐变)是最简单的渐变,进行简单的交叉淡入。
选项如下。

time (必填)
 指定渐变时间(以毫秒为单位)。
universal
 "universal" 渐变(通用渐变) 是基于称为规则图像的灰度图像进行变换的操作。规则图像由rule选项指定,该图像越暗的部分会越快地切换到切换目标图像(KAG中的里层)。
 如果规则图像比要进行渐变的图像小,则以瓷砖状平铺,如果规则图像比要进行渐变的图像大,则仅使用左上部分。
 KAG的文档中有详细的说明。
选项如下。

time (必填)
 指定渐变时间(以毫秒为单位)。
rule (必填)
 指定规则图像文件名。规则图像必须是256灰度级的图像。如果指定了其他图像,则将强制转换为灰度图像。
vague
指定「模糊区域值」。如果指定较小值(0之类),则画面切换前的部分和切换后的部分的边界清晰。如果指定较大值(128之类),则此边界将变得模糊、平滑。依规则图像不同有不同最佳值。如果省略,则视为64。
scroll
 "scroll"渐变(滚动渐变)是一种可以滑动切换源或切换目标或两者以产生滚动效果的渐变。
选项如下。

time (必填)
 指定渐变时间(以毫秒为单位)。
from
 指定从哪个方向出现切换源(KAG中的里层)层。
 在TJS中指定时,如果指定sttLeft,则从左开始(默认),如果指定sttTop,则从上开始,如果指定sttRight,则从右开始,如果指定sttBottom,则从下开始出现。
 在KAG的trans标签中指定时,如果指定、"left" 则从左开始(默认),如果指定"top" 则从上开始,如果指定"right" 则从右开始,如果指定"bottom" 则从下开始出现。
stay
 指定切换源和切换目标图像如何移动。
 在TJS中指定时,如果指定ststNoStay,则切换后的图像会像推动原来的图像一样出现(默认)。将两画面连接起来,可以产生滚动的效果。如果指定ststStaySrc,则切换图层的图像移动出去,其背后为切换后的图像。 如果指定ststStayDest,则切图层的的图像静止,切换后的图像移动会进入其中。
 KAG 的情况下"nostay" 为 ststNoStay、"stayback" 为 ststStaySrc、"stayfore" 为 ststStayDest 。

扩展渐变插件

 扩展渐变插件(extrans.dll)是吉里吉里2用的插件,可以使用几个本体上没有内置的渐变。
 要使其可用,与其他插件一样,必须使用Plugins.link 方法连接(对于KAG,使用loadplugin命令)。 连接后即可使用以下渐变处理程序。

wave
"wave" (波浪) 渐变是通过光栅滚动来表示和切换波浪的渐变。

wave_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
wavetype
 指定波浪的运动。指定0的话,在渐变的最初和最后波浪会很细,中间波浪会变得剧烈。指定1的话,最初波浪会很细,渐渐变得剧烈。指定2的话,最初波浪会很剧烈,渐渐变细。默认值为0。
maxh
 指定波浪宽度的最大值(以像素为单位)。值越大,波浪的波动就越剧烈。默认值为50。
maxomega
 指定波的最大角速度(rad/pixel)。增加值会使波更细。减小值会使波浪更大。默认值为0.2。
bgcolor1
  以0xRRGGBB格式指定初始背景色。
bgcolor2
 以0xRRGGBB格式指定最终背景色。背景色从初始背景色开始,逐渐变为最终背景色。
mosaic
"mosaic" (马赛克)渐变是一种表示矩形马赛克的渐变。

mosaic_trans.png

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
maxsize
 指定马赛克矩形大小的最大值。默认值为30。增加值会使马赛克变得模糊。
turn
"turn"渐变是,表现出几张小卡片一下子翻过来的渐变。

turn_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
bgcolor
 以0xRRGBB格式指定背景色。
rotatezoom
"rotatezoom" 渐变是一边旋转变换源(KAG的里层)一边放大或缩小的渐变。

rotatezoom_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
factor
 指定初始放大率。如果指定0,则最初看不见。从中央一边旋转一边放大。指定2的话,从2倍的放大率慢慢旋转到等倍的同时缩小。也可以指定3以上的数量和实数。默认值为1(等倍)。
accel
 指定缩放行为是否以加速度方式进行。-2如果指定的负数小于或等于负数,则开始较快,并逐渐变慢。如果指定2以上的正数,则开始较慢,然后逐渐加快。0表示匀速运动。但是视觉效果可能看不到匀速。默认值为0。
twist
 指定在哪个方向旋转多少。如果指定正数,则逆时针旋转。负数表示顺时针旋转。指定的值为转速。默认值为2。
twistaccel
 指定旋转行为是否以加速度方式进行。-2如果指定的负数小于或等于负数,则开始较快,并逐渐变慢。如果指定2以上的正数,则开始较慢,然后逐渐加快。0表示匀速运动。默认值为-2。
rotatevanish
"rotatevanish" 渐变是一边旋转变换目标层(KAG的表层)一边缩小的渐变。

rotatevanish_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
accel
 指定缩放行为是否以加速度方式进行。-2如果指定的负数小于或等于负数,则开始较快,并逐渐变慢。如果指定2以上的正数,则开始较慢,然后逐渐加快。0表示匀速运动。但是视觉效果可能看不到匀速。默认值为2。
twist
 指定在哪个方向旋转多少。如果指定正数,则逆时针旋转。负数表示顺时针旋转。指定的值为转速。默认值为2。
twistaccel
 指定旋转行为是否以加速度方式进行。-2如果指定的负数小于或等于负数,则开始较快,并逐渐变慢。如果指定2以上的正数,则开始较慢,然后逐渐加快。0表示匀速运动。默认值为2。
rotateswap
"rotateswap" 渐变是一种在渐变目标和渐变源之间旋转切换的渐变。渐变目标层(KAG的的表层)一边旋转一边往里走,取而代之的是渐变源(KAG的里层)一边旋转一边来到跟前。

rotateswap_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
twist
 指定在哪个方向旋转多少。如果指定正数,则逆时针旋转。负数表示顺时针旋转。指定的值为转速。默认值为1。
bgcolor
 以0xRRGBB格式指定背景色。
ripple
"ripple" 渐变是一边进行波纹扩大的效果一边切换的渐变。

ripple_trans.jpg

 有以下的选项。

time (必填)
 指定渐变时间(以毫秒为单位)。
centerx
 指定波纹的中心X坐标。省略的话就是图像的中央。
centery
 指定波纹的中心Y坐标。省略的话就是图像的中央。
rwidth
 指定波纹的细度。可以指定16、32、64、128中的一个,数字越小,波纹越细。如果省略,则为128。
roundness
 指定波纹是纵向长的椭圆、正圆还是横向长的椭圆。如果指定介于0.0和1.0之间(但不包含0.0)的数值范围(例如,0.5),则会显示一个纵向较长的椭圆。1.0表示正圆。如果指定大于1.0的数字(例如,2),则它是一个横向较长的椭圆。如果省略,则为1.0。
speed
 指定波浪传播的速度。如果省略,则为6.0。
maxdrift
 指定波浪的激烈程度。如果省略,则为24。


Note
 第一次运行时,ripple渐变将分配相当大的内存(在0.5到4MB之间,根据选项的不同而不同),并预先完成用于平滑渐变的数值计算,并将其存储在内存中。这可能需要一点时间(大约0.01秒到0.5秒)。
 如果要变换的图像的大小、centerx、centery、rwidth、roundness和maxdrift条件都相同,会重复使用上一次数值计算的信息。最多保留四个不同条件的数值计算结果(存入缓存) 如果要求对在此之上的新条件进行数值计算,则将删除最旧的信息。
 在此基础上,如果您经常使用此渐变,可以在执行之前运行一次虚拟渐变,以避免以后进行数值计算。