[]图片遮罩大小跟设置不一致


(function()
{
var Sprite  = Laya.Sprite;
var Stage   = Laya.Stage;
var Texture = Laya.Texture;
var Browser = Laya.Browser;
var Handler = Laya.Handler;
var WebGL   = Laya.WebGL;
(function()
{
// 不支持WebGL时自动切换至Canvas
Laya.init(Browser.clientWidth, Browser.clientHeight, WebGL);
Laya.stage.alignV = Stage.ALIGN_MIDDLE;
Laya.stage.alignH = Stage.ALIGN_CENTER;
Laya.stage.scaleMode = "showall";
Laya.stage.bgColor = "#232628";
showApe();
})();
function showApe()
{
// 方法1:使用loadImage
var ape = new Sprite();
Laya.stage.addChild(ape);
ape.loadImage("../../res/apes/monkey3.png");
// 方法2:使用drawTexture
Laya.loader.load("https://s2.d2scdn.com/2017/12/ ... ot%3B, Handler.create(this, function()
{
var t = Laya.loader.getRes("https://s2.d2scdn.com/2017/12/ ... 6quot;);
var ape = new Sprite();
ape.scaleX = 0.5
ape.scaleY = 1
ape.graphics.drawTexture(t, 0, 0);
Laya.stage.addChild(ape);
ape.pos(200, 0);
          let sp = new Sprite()
          sp.graphics.drawRect(0, 0, 50, 50, '#ffff000')
          ape.mask = sp
}));
}
})();
右边的形状明显不是正方形
Selection_002.png
已邀请:

Aar0n

赞同来自: kezhiyu

我自己试了才回你的,父节点下有一个sprite 和一个遮罩sprite ,他们两个缩放没有关联,你层级下多一个spriteZ 然再在这个spriteZ 下 放一个图sprite,和一个遮罩sprite,图缩放,不影响遮罩,这是不是你想要的,引擎部我去问了,子节点就是随父节点缩放的,不需要改进
s.png


q.png

 

kezhiyu

赞同来自:

关于里面的问题,这里里面 如果scalex 和scaley都是1 那是正确的但是,如果不是,那就出现这样的情况,但是一张图片 scalex和scaley通常都不是1.都是缩放或者放大了

kezhiyu

赞同来自:

关键是。有这样的问题,就没办法直接用别的sprite作为mask了。来个大神解决下吧

Aar0n

赞同来自:

你把需要用到缩放的那个x坐标先乘以2存在另一个变量里,,然后每次数组需要用到这种坐标就用另一个已经乘以2的变量,能减少点代码量

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作