图像
标签 | 描述 |
image, img | 读取图像 |
pimage | 在指定的图层上读取部分图像,部分图像会把原来的图像部分地覆盖 |
ptext | 在图层上描绘文字 |
syncmsg | 把所有message里层的内容复制到表层 |
freeimage | 清除指定的图层 |
clearlayers | 清除表或里的所有图层 |
动画 | |
animstart | 开始动画,其实此标签是多余的 |
animstop | 停止动画,事实上并没有这样的功能 |
wa | 等待动画停止为止,事实上并没有这样的功能 |
trans | |
trans | 场景转换 |
stoptrans | 停止场景转换 |
wt | 等待场景转换完成 |
move | |
move | 让图层移动起来 |
stopmove | 停止所有图层的移动 |
wm | 等待图像移动完成 |
quake | |
quake | 让全部图层震动,除了message层 |
stopquake | 停止所有图层的震动 |
wq | 等待震动完成 |
action | |
action | 执行运动模块 |
stopaction | 停止执行中的模块 |
wact | 等待执行中的模块完成 |
领域图像 | |
mapimage | 读取领域图像,使用它时用bug,需要修正 |
mapaction | 设定领域图像的行为,使用它有一定限制性 |
mapdisable | 让领域图像无效化 |
image,img
说明: (1) 用于读取图像 (2) 内部通过getLayerFromElm(elm).loadImages(elm)来实现 | |
基本属性: storage: (string) key: (0xRRGGBB,“clPalIdx”,“clAdapt”,“clAlphaMat + 0xRRGGBB”) page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”……,num) message得到的是当前的信息层,string得到的是当前的layers[+num]层) 以上字典还未完结,当layer选择是message,message0,message1……时,可通过loadImages (storage,key)读入图像 | |
当layer选择是base时,有 storage: (string) key: (string) opacity: (int 0 to 255) pos: (left/top/center,以上字符串之一) left: (int) top: (int) clipleft: (int) cliptop: (int) clipwidth: (int) clipheight: (int) fliplr: (bool) flipud: (bool) grayscale: (bool) mcolor: (string) mopacity: (int) rgamma: (0.0 ~ 9.0) rfloor: (int 0 to 255) rceil: (int 0 to 255) ggamma: (0.0 ~ 9.0) gfloor: (int 0 to 255) gceil: (int 0 to 255) bgamma: (0.0 ~ 9.0) bfloor: (int 0 to 255) bceil: (int 0 to 255) mapimage: (string) mapaction: (string) | 当layer选择是stage或event或characterlayer时,有 storage: (string) key: (string) visible: (bool) opacity: (int 0 to 255) index: (long) mode: (copy/alpha/addalpha/transp/opaque/rect/add/sub/mul/dodge/darken/lighten/screen/pile ,以上的字符串之一) pos: (left/top/center,以上字符串之一) left: (int) top: (int) clipleft: (int) cliptop: (int) clipwidth: (int) clipheight: (int) fliplr: (bool) flipud: (bool) grayscale: (bool) mcolor: (string) mopacity: (int) rgamma: (0.0 ~ 9.0) rfloor: (int 0 to 255) rceil: (int 0 to 255) ggamma: (0.0 ~ 9.0) gfloor: (int 0 to 255) gceil: (int 0 to 255) bgamma: (0.0 ~ 9.0) bfloor: (int 0 to 255) bceil: (int 0 to 255) mapimage: (string) mapaction: (string) |
例子1: kag.fore.layers[0].visible=true; kag.tagHandlers.image(%[storage: "config.jpg", page: "fore", layer:"0"]); 这样图像将会位于layers[0]层 | |
例子2: kag.fore.messages[0].visible=true; kag.tagHandlers.image(%[storage: "config.jpg", page: "fore", layer:"message0"]); 这是有问题的,因为message0在读取图像时不是使用字典的,所以会出现错误 也就是说,对于messagelayer,我们不能使用读取图片 |
pimage
说明: (1) 在指定的图层上读取部分图像,部分图像会把原来的图像部分地覆盖 (2) 读入PartialImage,注意是不能指定layer为message,message0,message1......的,否则会出错找不到loadPartialImage因为MessageLayer并没有继承AnimationLayer (3) 内部通过getLayerFromElm(elm).loadPartialImage(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num ) message得到的是当前的信息层,num得到的是当前的layers[+num]层) tagname: (string 默认是pimage,主要用于tag上) storage: (string) key: (string) fliplr: (bool) flipud: (bool) dx: (位置的x轴偏移值,也就是坐标的x位置了) dy: (位置的y轴偏移值,也就是坐标的y位置了) sx: (要复制的图像x坐标值) sy: (要复制的图像y坐标值) sw: (要复制的图像宽度) sh: (要复制的图像高度) opacity: (int 0 to 255) mode: (copy,opaque的话就不能透明,pile,alpha,addalpha可透明) |
例子1: kag.fore.layers[0].setOptions(%[visible:true,left:100,top:100]); kag.fore.layers[0].setSize(500,500); kag.tagHandlers.pimage(%[storage: "bg", page: "fore", layer:"0",dx:0,dy:0,sx:20,sy:20,sw:500,sh:500]); 这样就可以在刚才的layers[0]层上加上一层图像 |
例子2: [pimage storage=bg page=fore layer=base dx=0 dy=0 sx=20 sy=20 sw=500 sh=500] 这样就能在bg的图像上截取一个矩形区域在base层上显上显示 |
ptext
说明: (1) 在表/里层上描绘文字 (2) 内部通过getLayerFromElm(elm).drawReconstructibleText(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,num得到的是当前的layers[+num]层) tagname: (string 默认是ptext,主要用于tag上) text: (string) vertical: (bool,预设是false,也就是逆时针旋转2700*0.1度) face: (dfxxxx) size: (int) angle: (以0.1度为单位,逆时针旋转) italic: (bool,预设是false) bold: (bool,预设是false) edge: (bool,预设是false) edgecolor: (0x000000) shadow: (bool,预设是true) shadowcolor: (0x000000) color: (0x000000) antialiased: (预设是true ,用途不明) |
例子: kag.tagHandlers.ptext(%[x:100 , y:100 , text:"test", size:20, color: 0xffffff , page: "fore", layer:"base" , bold:true]); |
syncmsg
说明: (1) 把所有messagelayer里层(back)的内容复制到表层(fore) (2) 内部通过messageLayer的assignComp()实现 |
属性:无 |
例子: kag.updateBeforeCh=false; game.current(%[page:"back",layer:"message0"]); game.font(%[size:50,color:0xffffff]); game.ch(%[text:"longmo"]); game.syncmsg(); 操作的是kag.back.messages[0],在上面描绘文字,是不可视的,然后把它复制到表层 屏幕上就显示出了longmo |
freeimage
说明: (1) 清除指定的图层,注意清除messagelayer层是有错误的,因为它并没有继承AnimationLayer (2) 内部主要通过调用getLayerFromElm(elm).freeImage(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,num得到的是当前的layers[+num]层 |
例子: var game=kag.tagHandlers; game.image(%[layer:"base",page:"fore",storage:"bg"]); game.freeimage(%[layer:"base",page:"fore"]); 屏幕上什么也没有显示,因为freeimage了 |
clearlayers
说明: (1) 清除所有page(表或里)的图层,清除的所有层会以visible的状态显示 (2) 清空的层包括base, stage, event, layer, message, select, mapSelect (3) 内部主要通过调用freeImage来清除图像,在select和mapselect上调用done() |
属性: visible: (bool) page: (“back” 或 “fore”,page默认是fore) |
例子: kag.updateBeforeCh=false; var game=kag.tagHandlers; kag.fore.base.visible=true; game.image(%[storage:"bg.jpg",layer:"base",page:"fore"]); game.origch(%[text:"abc"]); game.origr(); game.origch(%[text:"def"]); game.clearlayers(%[visible:false]); 清除所有图层,上面的messages[0]和base层都被清除,并设定它们的visible状态 Base层有里visible,所以并不会改变它的visible状态,base层永远都是可视的 |
animstart
说明: (1) 开始动画 (2) 这对message层是无效的,因为它没有继承AnimationLayer,不能执行动画 (3) 其实这个标签是多余的,见下面的例子 (4) 内部通过调用getLayerFromElm(elm).startAnim(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,string得到的是当前的layers[+string]层 seg: (int) target: (string) |
例子1: var game=kag.tagHandlers; kag.fore.layers[0].loadImages(%[storage:"PageBreak.png",visible:true]); //game.animstart(%[layer:"0",page:"fore",seg:0]); 不需要animstart这一句,动画就会自动地执行 其唯一用处是通过改变target来使动画得到改变 |
例子2: 在PageBreak.asd最后面加上以下语句 *myinfo @iscript System.inform("myinfo"); @endscript 然后执行 var game=kag.tagHandlers; kag.fore.layers[0].loadImages(%[storage:"PageBreak.png",visible:true]); game.animstart(%[layer:"0", page:"fore", seg:0, target:"*myinfo"]); 因为标签的跳转,动画并没有显示,而是弹出一个myinfo的对话框 |
animstop
说明: (1) 作用是停止动画,但事实上并不能停止 (2) 内部调用了getLayerFromElm(elm).stopAnim(+elm.seg)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,string得到的是当前的layers[+num]层 seg: (int) |
例子: var game=kag.tagHandlers; kag.fore.layers[0].loadImages(%[storage:"PageBreak.png",visible:true]); game.animstop(%[layer:"0",page:"fore",seg:0]); 动画并没有停止 即是使用tag @image layer=0 page=fore storage=PageBreak.png visible=true @animstop layer=0 page=fore seg=0 动画也不能停止 |
wa
说明: (1) 等待动画停止为止 (2) 内部通过调用waitAnimation(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… string) message得到的是当前的信息层,string得到的是当前的layers[+string]层) seg: (int) |
例子: kag.updateBeforeCh=false; var game=kag.tagHandlers; kag.fore.layers[0].loadImages(%[storage:"PageBreak.png", visible:true]); game.wa(%[layer:"0",page:"fore",seg:0]); game.ch(%[text:"hello"]); 屏幕上照样会显示hello,并未能等到动画停止 不只是tjs,在kag上也是如此 |
trans
说明: (1) 场景的转换,把里层的内容trans到表层上,如果里层为空的话,看上去就会是表层在消失,因为空白的里层trans到表层上 (2) 内部通过getLayerPageFromElm(elm, false).beginTransition(elm)实现 | |||
属性: layer: (number) method有三种设定,不同的设定会有不同的属性,如下所示
| |||
例子1: var updateBeforeCh=false; var game=kag.tagHandlers; game.current(%[layer:"message0",page:"back"]); game.ch(%[text:"abcdefgh"]); game.trans(%[layer:"message0",method:"crossfade",time:2000]); 把里message0层的文字用2000毫秒时间渐变到外message0上 | |||
例子2: game.image(%[layer:"0",page:"back",storage:"config",visible:true]); game.trans(%[method:"crossfade",time:2000]); 把layer0层的图像config渐变出来 注意game.trans中绝不能是game.trans(%[layer:"0",method:"crossfade",time:2000]); 加上了layer属性的设定就会不能进行渐变,原因不明 | |||
例子3: game.image(%[layer:"0",page:"fore",storage:"config",visible:true]); game.trans(%[method:"crossfade",time:2000]); 图像就会渐变式地消失掉 |
stoptrans
说明: (1) 停止渐变,显示的是最终的渐变结果 (2) 内部通过stopAllTransitions()实现 |
例子: game.image(%[layer:"0",page:"back",storage:"config",visible:true]); game.trans(%[method:"crossfade",time:2000]); game.stoptrans(); 显示的只是图像,也就是渐变的结果 |
wt
说明: (1) 等待渐变结束 (2) 内部通过waitTransition(elm)实现 |
属性: canskip: (bool) |
例子1: game.image(%[layer:"0",page:"back",storage:"config",visible:true]); game.trans(%[method:"crossfade",time:2000]); game.wt(%[canskip:false]); System.inform("abc"); tjs的话,abc的对话框会立刻显示,在tjs中并不能实现等待的效果 |
例子2: @iscript game.image(%[layer:"0",page:"back",storage:"config",visible:true]); game.trans(%[method:"crossfade",time:2000]); @endscript @wt canskip=false @iscript System.inform("abc"); @endscript 只有当渐变完时才会弹出abc的对话框,在kag中能真正地实现等待的效果 |
move
说明: (1) 让图层移动 (2) 在移动进行时,如果直接关闭窗口,会弹出错误对话框,这必须手动去处理这种情况 (3) 内部主要通过getLayerFromElm(elm).beginMove(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,string得到的是当前的layers[+num]层) path: string ( 如: “(200,200,100),(500,100,255)” ),(200,200)和(500,100)分别是初始坐标和终止坐标 accel: int time: int spline: bool (指是否使用spline补间) time: int |
例子1: var game=kag.tagHandlers; game.image(%[storage:"config",layer:"0",page:"fore",visible:true]); game.move(%[path:"(100,100,0),(400,700,255),(0,0,0)",accel:2,time:2000,spline:true,layer:"0",page:"fore"]); 图片就能够移动起来 |
例子2: var updateBeforeCh=false; var game=kag.tagHandlers; game.ch(%[text:"longmo"]); game.move(%[path:"(100,100,0),(400,700,255),(0,0,0)",accel:2,time:2000,spline:true,layer:"message0",page:"fore"]); message0层也能移动 |
stopmove
说明: (1) 停止所有图层的移动 (2) 内部主要通过stopAllMoves()实现 |
例子: var updateBeforeCh=false; var game=kag.tagHandlers; game.ch(%[text:"longmo"]); game.move(%[path:"(100,100,0),(400,700,255),(50,50,80)",accel:2,time:2000,spline:true,layer:"message0",page:"fore"]); game.stopmove(); 图像移动停止在最终的位置上 |
wm
说明: (1) 等待移动结束 (2) 内部主要通过waitMove(elm)实现 |
属性: canskip: (bool) |
例子1: @iscript: var updateBeforeCh=false; var game=kag.tagHandlers; game.ch(%[text:"longmo"]); game.move(%[path:"(100,100,0),(400,700,255),(0,0,0)",accel:2,time:2000,spline:true,layer:"message0",page:"fore"]); game.wm(%[canskip:false]); @endscript @iscript System.inform("move"); @endscript Move的对话框是瞬间显示出来的,在tjs中并未能有真正等待的效果 |
例子2: @iscript var updateBeforeCh=false; var game=kag.tagHandlers; game.ch(%[text:"longmo"]); game.move(%[path:"(100,100,0),(400,700,255),(0,0,0)",accel:2,time:2000,spline:true,layer:"message0",page:"fore"]); @endscript @wm canskip=false @iscript System.inform("move"); @endscript 在kag中就能实现等待的效果 |
quake
说明: (1) 让全部图层震动,除了message层 (2) 内部主要通过doQuake(elm)实现 |
属性: vmax hmax time timemode |
例子: @iscript kag.fore.base.drawText(400, 100, "fdsf", 0xffffff); kag.tagHandlers.image(%[storage:"bg",layer:"0",page:"fore",visible:true]); kag.tagHandlers.quake(%[vmax:20, hmax:20, time:3000, timemode:"ms"]); @endscript |
stopquake
说明: (1) 停止所有图层的震动 (2) 内部主要通过stopQuake()实现 |
例子: @iscript kag.fore.base.drawText(400, 100, "fdsf", 0xffffff); var test = new Layer(kag, kag.fore.base); test.visible = true; test.loadImages("a"); test.setPos(100,100,100,100); kag.tagHandlers.quake(%[vmax:20, hmax:20, time:3000, timemode:"ms"]); kag.tagHandlers.stopquake(); @endscript |
wq
说明: (1) 等待震动完成 (2) 内部主要通过waitQuake(elm)实现 |
属性: canskip: (bool) |
例子: @iscript kag.fore.base.drawText(400, 100, "fdsf", 0xffffff); kag.tagHandlers.image(%[storage:"bg",layer:"0",page:"fore",visible:true]); kag.tagHandlers.quake(%[vmax:20, hmax:20, time:3000, timemode:"ms"]); @endscript @wq canskip=true Abcdef 当点击时就会停止震动,显示文字abcdef |
action
说明: (1) 在指定的层上执行相应的运动模块 (2) messagelayer因为没继承GraphicLayerEx,所以不能进行action (3) 内部主要通过getLayerFromElm(elm).beginAction(elm)实现 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) ,message得到的是当前的信息层,num得到的是当前的layers[+num]层) module: 模块的名称,模块的其它参数可参看下面的
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
例子1: var game=kag.tagHandlers; game.image(%[storage:"config",layer:"0",page:"fore",visible:true]); game.action(%[layer:"0",page:"fore",module:LayerVibrateActionModule,vibration:20,waittime:100,time:2000]); 这样图片就会震动 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
例子2: @image storage=config layer=0 page=fore visible=true @action layer=0 page=fore module=LayerNormalMoveModule x=400 y=400 time=2000 这样使用kag,图片就能移动 |
stopaction
说明: (1) 在指定的层上停止action (2) 内部通过getLayerFromElm(elm).stopAciton(elm)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,string得到的是当前的layers[+num]层) |
例子1: var game=kag.tagHandlers; game.image(%[storage:"config",layer:"0",page:"fore",visible:true]); game.action(%[layer:"0",page:"fore",module:LayerVibrateActionModule,vibration:20,waittime:100,time:2000]); game.stopaction(%[layer:"0",page:"fore"]); layer0层停止移动 |
例子2: @image storage=config layer=0 page=fore visible=true @action layer=0 page=fore module=LayerNormalMoveModule x=400 y=400 time=2000 @stopaction layer=0 page=fore 在终止的位置上停止action |
wact
说明: (1) 等待action结束 (2) 内部主要通过waitLayerAction(elm)和waitAction(elm)实现 |
属性: canskip: (bool) |
例子1: @iscript var game=kag.tagHandlers; game.image(%[storage:"config",layer:"0",page:"fore",visible:true]); game.action(%[layer:"0",page:"fore",module:LayerVibrateActionModule,vibration:20,waittime:100,time:2000]); game.wact(%[canskip:true]); @endscript @iscript System.inform("action"); @endscript 对话框立即弹出,tjs并不能实现等待效果,只能用kag实现 |
例子2: @image storage=config layer=0 page=fore visible=true @action layer=0 page=fore module=LayerNormalMoveModule x=400 y=400 time=2000 @wact canskip=true @iscript System.inform("action"); @endscript 等到移动结束或者旧击左键,就会弹出action对话框 |
mapimage
说明: (1) 读取领域图像,注意领域图像是不可视的 (2) 执行此语句时,会有bug,可参考我曾发布的GraphicLayer中的修正方法 (3) 内部通过getLayerFromElm(elm).loadProvinceImage(elm.storage)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,num得到的是当前的layers[+num]层 storage: (string) |
例子: var game=kag.tagHandlers; kag.fore.layers[0].visible=true; kag.fore.layers[0].isetPos(0,0,1024,768); game.mapimage(%[storage:"province.bmp",layer:"0",page:"fore"]); 这样就能成功读取领域图像了,注意province.bmp的大小是1024*768,所以isetPos的大小设置也需要是1024*768 |
mapaction
说明: (1) 设定领域图像的行为 (2) 此标签似乎只能用于StageLayer或BaseLayer (3) 内部通过getLayerFromElm(elm).loadProvinceActions(elm.storage)实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,num得到的是当前的layers[+num]层 storage: (string) |
例子: mapaction似乎在所有的层都无法执行,如果新建一个CharacterLayer,情况都是一样 但是新建一个GraphicLayerEx或者StageLayer或者BaseLayer就完全无问题 等价的代码如下: var mainlayer=new StageLayer(kag,kag.primaryLayer,"name",4); mainlayer.isetPos(0,0,1024,768); mainlayer.visible=true; mainlayer.loadProvinceImage("province"); mainlayer.loadProvinceActions("kkk.ma"); mainlayer.hitType=htProvince; mainlayer.hitThreshold=125; 在kkk.ma文档中写入 168:hint="东京";exp="System.inform('tokyo')";cursor="dinosau2.ani"; 249:hint="北京"; Exp是指当点击区域时执行的东西 使用kag.fore.stage , kag.fore.base , kag.fore.layers[i] , kag.fore.messages[i] , kag.fore.event通通都不行,原因不明 因为直接使用loadImages的mapimage能读取领域图像,但不论是tjs还是kag,运行起来还是没有结果 kag.fore.layers[0].isetPos(0,0,1024,768); game.image(%[layer:"0", page:"fore", storage:"province", visible:true, mapimage:"province.bmp"]); 虽然会自动地读取province.ma,但是什么都没有显示 |
mapdisable
说明: (1) 让指定的领域图像无效化 (2) 内部通过调用getLayerFromElm(elm).clearProvinceActions()实现 |
属性: page: (“fore” 或 “back”) layer: (“base”,“stage”,“event”,“message”, “message0”, “message1”, “message2”…… num) message得到的是当前的信息层,num得到的是当前的layers[+num]层) |
例子: 执行时如kag.tagHandlers.mapdisable(%[layer: “0” , page: “back”]);或 @mapdisable layer=0 page=back 因为mapimage和mapaction无法执行,所以无法调试 |