寒少 发表于 2022-1-4 14:45:15

关于tjs实现图片去色的问题

我想请教一下,在界面中放入一张图片后,是否可以实现将其指定区域内去色,其它区域正常显示?或者有没有近似的效果的实现方法?
感谢!!!

VariableD 发表于 2022-1-4 15:17:20

可以整张图片去色
可以将一张图片的一部分区域盖到另外一张图片上(copyRect)
因此如果用一张灰色图片(彩色图片加载到图层里然后使用action里的效果变灰色)和一张原来的彩色图片,实际显示的是彩色图片+贴上了灰色的一小块
应该可行?
但这个指定区域只能是方形。如果要不规则图形就得想别的办法了。

寒少 发表于 2022-1-4 15:42:57

本帖最后由 寒少 于 2022-1-4 15:44 编辑

感谢D大,那现在就两种方案,多张图片独立去色,或者单张图片,覆盖多张灰度图片。我先做出来看看效果吧

寒少 发表于 2022-1-10 13:46:54

VariableD 发表于 2022-1-4 15:17
可以整张图片去色
可以将一张图片的一部分区域盖到另外一张图片上(copyRect)
因此如果用一张灰色图片(彩 ...

D大,可否给一个copyRect的使用示例,文档里没有翻到

VariableD 发表于 2022-1-10 17:23:09

copyRectKAG系统里面本身用得蛮多,可以直接grep搜索,不过应该是layer class的内容(kr2文档)。里面有每个参数的详细说明。
Layer.copyRect機能/意味矩形コピータイプLayerクラスのメソッド
構文copyRect(dleft, dtop, src, sleft, stop, swidth, sheight)
引数
dleft コピー先の矩形の左端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

dtop コピー先の矩形の上端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

src コピー元のレイヤオブジェクトを指定します。

sleft コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

stop コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

swidth コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

sheight コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

戻り値なし (void)
説明 指定されたコピー元レイヤの矩形部分を自分のレイヤの指定位置にコピーします。
 コピーされる画像は、コピー先レイヤ ( メソッドを実行するレイヤ ) の Layer.face プロパティの値によって変わります。
dfAlpha (または dfBoth) : メイン画像とマスク画像がコピーされます
dfAddAlpha : メイン画像とマスク画像がコピーされます
dfOpaque (または dfMain) : Layer.holdAlpha プロパティが真の場合は、メイン画像のみがコピーされます ( マスク画像はコピーされません )。偽の場合はメイン画像とマスク画像がコピーされます
dfMask : マスク画像のみがコピーされます ( メイン画像はコピーされません )
dfProvince : 領域画像のみがコピーされます ( マスク画像やメイン画像はコピーされません )
 コピー元のレイヤの Layer.face プロパティは無視されます。
 このメソッドは、Layer.holdAlpha の影響は受けません (dfAlpha や dfAddAlpha の場合は holdAlpha に関わらずマスク画像もコピーされます)

寒少 发表于 2022-1-10 20:23:02

我想把12层的半透明图片B盖进13层的A上,结果是A被扣了一块,是哪里有错误吗?

kag.fore.layers.face=dfAlpha;
kag.fore.layers.visible=true;
kag.tagHandlers.image(%);
kag.tagHandlers.image(%);

kag.fore.layers.copyRect(0, 0, kag.back.layers, 100, 100, 300, 300);       
//kag.fore.layers.visible=false;

VariableD 发表于 2022-1-10 21:42:28

12你载入的是fore,copy的是back

寒少 发表于 2022-1-11 09:26:20

依旧是A被扣下去了一块


kag.fore.layers.visible=true;
kag.tagHandlers.image(%);
kag.tagHandlers.image(%);

kag.fore.layers.copyRect(0, 0, kag.back.layers, 100, 100, 300, 300);       

寒少 发表于 2022-1-11 18:41:45

VariableD 发表于 2022-1-10 21:42
12你载入的是fore,copy的是back

{:3_44:}还是没有弄明白,捂脸

VariableD 发表于 2022-1-12 18:46:25

啊,看了一下,倒也不是……
我一般是直接用的TJS layer(new layer那种),所以没怎么研究过tagHandlers怎么处理这个。
//比如这种,这样加载图片,先看看两个图能不能正常显示,再叠一个区块上去。
var layer=new Layer(kag, kag.fore.stage);
layer.loadImages("face_setting_sample");
layer.setSizeToImageSize();

然后比如参数里面的100,100,300,300这种,最好都先从确定的0,0位置开始。
搞清楚它那个参数复制的是哪一块,有没有成功叠到,再来调参数。
页: [1] 2
查看完整版本: 关于tjs实现图片去色的问题