标题: [某D的KRKR笔记本]丢那么几个可能有用的小函数
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-4 14:36  资料  短消息  加为好友 
[某D的KRKR笔记本]丢那么几个可能有用的小函数

没什么大不了的小东西...

二楼:按钮选项
三楼:图片悬停效果
四楼:游戏档案是否存在的判断
六楼:按钮选项·改
十三楼:游戏日期系统
十六楼:游戏中截图
十八楼:变量和字典相关
十九楼:按钮选项自动对齐
二十楼:图片使用另外一张图片的遮罩(发展可做探照灯等效果)

[ 本帖最后由 全局变量D 于 2012-5-11 20:13 编辑 ]





顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-4 14:46  资料  短消息  加为好友 
按钮式选项·改
加了阴影,调了字体,顺便一说无聊的可以继续发扬光大改出可以换颜色的……

原版来自:http://homepage1.nifty.com/gutchie/kirikiri_kag2/faq.html

@iscript
//
// 机能概要:
//   在按钮中央描绘文字
//
// 参数:
//   button  …按钮名(LinkButtonLayerまたはサブクラスのオブジェクト)
//   caption … 描绘的文字
//   size    …   文字的大小
//
// 返回值:
//   无
//
// 備考:
//   ‐エラーチェックは行っていない
//
function drawButtonCaption(button, caption, size)
{

button.font.face = "楷体_GB2312"; //改字体的地方...
button.font.height = size;     //文字大小设定
var w = button.font.getTextWidth(caption); // 取得要描绘文字的宽度
var x = (button.width - w) \ 2;    // 在按钮中央显示文字
var y = (button.height - size) \ 2;   //   文字在按钮上的y位置(左上角起算)

// 按钮「通常状态(normal)」部分文字显示
button.drawText(x+1,                           y+1, caption, 0x000000); //这里我加了阴影
button.drawText(x,                           y, caption, 0xFFFFFF);


// 按钮「按下状态(on)」部分文字显示
button.drawText(x+button.width+1,      y+1, caption, 0x000000);//还是阴影
button.drawText(x+button.width,              y, caption, 0xC8C8C8);

// 按钮「选中状态(over)」部分文字显示
button.drawText(x+button.width+button.width+1, y+1, caption, 0x000000);//继续阴影
button.drawText(x+button.width+button.width, y, caption, 0xC8C8C8);

}
@endscript

;用法:

[button normal=选择框图片 target=*标签]
[eval exp="drawButtonCaption(kag.current.links[kag.current.links.count-1].object, '选项文字', 24)"]

[ 本帖最后由 全局变量D 于 2011-10-29 17:15 编辑 ]





顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-4 14:50  资料  短消息  加为好友 
============================================
图片悬停效果(可用、但推荐使用加强版)
============================================
移动到按钮上在某个位置显示另外一张图片……
话说这有个问题就是记得退出这个界面的时候判断一下,如果这图片层存在就把它清了。(防止有人在按钮上按右键……)

[iscript]

function iconShow(pic)
{
tf.newLayer=new Layer(kag, kag.fore.base);
tf.newLayer.visible=true;
tf.newLayer.loadImages(pic);
tf.newLayer.setSizeToImageSize();
tf.newLayer.setPos(86,173);
}
function iconHide()
{
tf.newLayer.visible=false;
invalidate tf.newLayer;
}

[endscript]

;用法
[button normal="按钮图片" onenter="iconShow(悬停图片名)" onleave=iconHide()]

============================================
图片悬停效果制作加强版
============================================

[iscript]
//-----------------------------------------------
//存档截图悬停效果
//-----------------------------------------------
function showsnap(num)
{
//显示截图,支持属性同image TAG,可以继续以相同格式添加属性(如可以设定透明度等……)
kag.fore.layers[1].loadImages(%['storage'=>kag.getBookMarkFileNameAtNum(num),'visible'=>true,'left'=>34,'top'=>192]);
}

function hidesnap()
{
//隐藏截图
kag.fore.layers[1].visible=false;
}
[endscript]

使用例:
;用法:档案编号处填写该按钮所对应的存档编号数
[button normal="按钮图片" onenter="showsnap(档案编号)" onleave=hidesnap()]

以下连接的10楼则是不用自写函数的做法(直接复制可用):
http://kcddp.keyfc.net/bbs/viewthread.php?tid=62

[ 本帖最后由 全局变量D 于 2008-7-22 22:24 编辑 ]





顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-4 14:52  资料  短消息  加为好友 
;----------------------------------------------------------------------------------------
;档案/截图存在确认+显示
;----------------------------------------------------------------------------------------
;pimage命令不适用,理由不明……

[iscript]
function storagedata(num)
{
var sd=kag.saveDataLocation+'/data'+num+'.bmp';
return sd;
}
function checkdata(num)
{
var cd=Storages.isExistentStorage(kag.saveDataLocation+'/data'+num+'.bmp');
return cd;
}
[endscript]

;用法
[image layer=9 storage="&storagedata(0)" cond="checkdata(0)==true"]





顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-5 16:50  资料  短消息  加为好友 


QUOTE:
原帖由 希德船长 于 2007-3-5 11:33 发表
关于那个时间槽,我建议测试一下下面的操作:
先timebar,然后endtimebar,然后再次timebar。

如果出现异常,可以考虑把两个“invalidate timer;”去掉

...MS去掉的话timer会照常运作,改成找不到layer...
=v=也就是说如果不再次新建一个timer的话就不行吧...?
难怪说...封装成CLASS比较好...可惜我不会...OTL

[ 本帖最后由 全局变量D 于 2007-3-5 16:54 编辑 ]





顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-5 17:23  资料  短消息  加为好友 
但是function onTimer()的时候...是要判断那个layer的图片clip的...
如果在endtimebar的时候让层无效化,onTimer依然会继续运行...但是找不到那个要判断的layer了
那就不是说end一次以后再使用timebar会出毛病...而是end之后的下一个timer周期就要出错了...





顶部
Miliardo
幕后黑手
Rank: 4


UID 1
精华 0
积分 379
帖子 339
阅读权限 255
注册 2006-12-3
 
发表于 2007-3-5 19:19  资料  短消息  加为好友 
按钮选项……KAGEX不是有一组功能了么?

顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-5 19:59  资料  短消息  加为好友 
8知道...没看到KAGEX有这介绍...





顶部
Miliardo
幕后黑手
Rank: 4


UID 1
精华 0
积分 379
帖子 339
阅读权限 255
注册 2006-12-3
 
发表于 2007-3-5 21:51  资料  短消息  加为好友 
似乎是selopt/seladd/select……
这三个Tag……

顶部
全局变量D
亲友
Rank: 2



UID 14
精华 1
积分 1262
帖子 719
阅读权限 50
注册 2006-12-20
 
发表于 2007-3-19 13:07  资料  短消息  加为好友 
不带闰年判断的普通时间系统.

记得给这些时间变量赋个初始值:
f.年
f.月
f.日
f.周(星期几)

调用方法...
以下做成一个ks文件然后在first.ks里用类似

[call storage=time.ks]

的方法调用

[时间前进]

则对应的游戏内时间前进一天.

;-------------------------------------------------
;简单的时间系统 by D
;-------------------------------------------------
*start
;-------------------------------------------------
[macro name=跨月]
[eval exp="f.月++"]
[eval exp="f.日=1"]
[eval exp="tf.已经前进=true"]
[endmacro]

[macro name=跨年]
[eval exp="f.年++"]
[eval exp="f.月=1"]
[eval exp="f.日=1"]
[eval exp="tf.已经前进=true"]
[endmacro]

[macro name=时间前进]

[eval exp="tf.周前进=false"]
[eval exp="tf.已经前进=false"]

[if exp="f.周==7"]
[eval exp="f.周=1"]
[eval exp="tf.周前进=true"]
[endif]

[ignore exp="tf.周前进==true"]
[eval exp="f.周+=1"]
[endignore]

;-------------------------------------
[if exp="f.月==1 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==2 && f.日==28"]
[跨月]
[endif]
[if exp="f.月==3 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==4 && f.日==30"]
[跨月]
[endif]
[if exp="f.月==5 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==6 && f.日==30"]
[跨月]
[endif]
[if exp="f.月==7 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==8 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==9 && f.日==30"]
[跨月]
[endif]
[if exp="f.月==10 && f.日==31"]
[跨月]
[endif]
[if exp="f.月==11 && f.日==30"]
[跨月]
[endif]
[if exp="f.月==12 && f.日==31"]
[跨年]
[endif]

[ignore exp="tf.已经前进==true"]
[eval exp="f.日++"]
[endignore]

[eval exp="f.当前时间=f.年+' 年 '+&f.月+' 月 '+&f.日+' 日'"]

;确认时间有没正常前进,可以在控制台查看到这几个数值的变化
[trace exp="f.年"]
[trace exp="f.月"]
[trace exp="f.日"]
[trace exp="f.周"]
[endmacro]

[return]






顶部
 



清除 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 11.157000 second(s), 7 queries , Gzip enabled
粤ICP备05060595号
[ 当前模板 - 天高云淡 v 设计制作 - 七星论坛 v 请使用1024*768或以上分辨率浏览本模板 ]
请勿删除或修改此处版权图示