lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: zyflzxy
打印 上一主题 下一主题

位图与位图不能MASK

[复制链接]

65

主题

2

好友

1355

积分

偏将军

Rank: 4

跳转到指定楼层
楼主
发表于 2014-12-9 16:28:11 |显示全部楼层 |倒序浏览
如果位图与位图不能MASK,那用什么方法呢,如果下面这个方法,back 与 img不在同个的容器里,就无法实现MASK效果,应该如何解决。var imgLayer = new LSprite();var back = new LBitmap(new LBitmapData(dataList["back"]));imgLayer.addChild(back);var img = new LBitmap(new LBitmapData(dataList["img"]));imgLayer.addChild(img);img.blendMode = LBlendMode.LIGHTER;
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

沙发
发表于 2014-12-10 10:27:33 |显示全部楼层
lufy 发表于 2014-12-9 17:46
canvas里位图是不能做遮罩的,如果实在要做的话,lufylegend中可以使用一些特殊的做法,让位图或者对象变成 ...

就是遮罩和被遮罩在不同的容器里,可不可以实现MASK?        (这两个位图是在同个容器里)

hideSprite = new LSprite();
        playerData = new LBitmapData(result["player"]);
        hidePlayer = new LAnimationTimeline(playerData,LGlobal.divideCoordinate(480,630,3,4));
        hideSprite.addChild(hidePlayer);
       
        var bitmapData = new LBitmapData(result["face"]);
        bitmapFace = new LBitmap(bitmapData);
        bitmapFace.blendMode = LBlendMode.SOURCE_IN;
        hideSprite.addChild(bitmapFace);
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

板凳
发表于 2014-12-10 17:41:44 |显示全部楼层
我想的是这种效果,你看能实现到吗?
就是被遮罩的位图,能实实调用不同的遮罩,而不是限定一个。
clothesMc.getChildByName(“mc1”).mask = maskMc.getChildByName("mask1");
clothesMc.getChildByName(“mc1”).mask = maskMc.getChildByName("mask2");
clothesMc.getChildByName(“mc2”).mask = maskMc.getChildByName("mask1");
以此类推,maskMc里面有很多遮罩位图。
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

地板
发表于 2014-12-10 17:42:35 |显示全部楼层
lufy 发表于 2014-12-10 10:40
所谓遮罩,就是不应该显示的东西

我想的是这种效果,你看能实现到吗?
就是被遮罩的位图,能实实调用不同的遮罩,而不是限定一个。
clothesMc.getChildByName(“mc1”).mask = maskMc.getChildByName("mask1");
clothesMc.getChildByName(“mc1”).mask = maskMc.getChildByName("mask2");
clothesMc.getChildByName(“mc2”).mask = maskMc.getChildByName("mask4");
以此类推,maskMc里面有很多遮罩位图。
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

5#
发表于 2014-12-11 10:15:30 |显示全部楼层
lufy 发表于 2014-12-10 18:04
我给你的那个连接,mask就是一个LAnimationTimeLine对象,也就是一个LSprite对象
动画都能当遮罩了,改变 ...

可是你这个遮罩层里面放了遮罩与被遮罩都放在同个容器里,然后再进行绘制,我还是不太明白其中的原理。
hideSprite.addChild(hidePlayer);

hideSprite.addChild(bitmapFace);

bitmapDataShow.draw(hideSprite);
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

6#
发表于 2014-12-11 14:42:31 |显示全部楼层
lufy 发表于 2014-12-11 12:20
首先你要知道LBlendMode,API中都有解释,SOURCE_IN是在新图形以及已有内容重叠的地方,新图形才绘制。所 ...

谢谢您的细心回复,我也明白了你的意思,但是我不太懂怎么去弄,你能做个简单的演示吗?
就是多个位图,引用多个不一样的遮罩效果吗。

clothesMc.getChildByName(“mc1”).mask = maskMc.getChildByName("mask1");
clothesMc.getChildByName(“mc2”).mask = maskMc.getChildByName("mask2");
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

7#
发表于 2014-12-12 09:49:27 |显示全部楼层
lufy 发表于 2014-12-11 21:08
如果你要用位图做遮罩的话,就不能用mask了,得像我前面给你的例子一样用LBlendMode
如果是普通的遮罩就简 ...

位图与位图的遮罩
回复

使用道具 举报

65

主题

2

好友

1355

积分

偏将军

Rank: 4

8#
发表于 2014-12-12 10:35:14 |显示全部楼层
lufy 发表于 2014-12-12 10:27
只能帮你到这里了
剩下的依葫芦画瓢自己弄吧
三个对象,分别对应三个mask

谢谢,你真是太厉害了,也很细心的回复我们。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-7 05:59 , Processed in 0.052083 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部