Egret社区
产品 Egret Engine 版本 5.2.20
复现概率 100% 平台 Android 全部
复现步骤
问题描述 从5.2.15之后某版本的libegret.so有问题,导致drawToTexture方法在安卓原生上不能实现遮罩egret.BlendMode.ERASE效果,现在想回到旧版本,结果输出的libegret.so全是和最新版一样的,能否输出到原旧版本的libegret.so和egret.aar?
错误代码 /**
* bq zbq
* 反向遮罩图片
*/
class EraseMaskImage {
private maskCon:egret.DisplayObjectContainer;
public maskRender:egret.RenderTexture;
public maskSprite:egret.Shape;
private maskGraphics:egret.Graphics;
//public baseObj:egret.DisplayObject;
public maskImg:egret.Bitmap;
private lightMatrix:egret.Matrix;
//public x:number = 0;
//public y:number = 0;
public radius:number = 0;

public clipBounds:egret.Rectangle;

public constructor(obj:egret.DisplayObject) {
this.maskCon = new egret.DisplayObjectContainer();
this.maskCon.touchEnabled = false;

obj.x = 0;
obj.y = 0;
if(obj.parent){
obj.parent.removeChild(obj);
}
//this.baseObj = obj;
this.maskCon.addChild(obj);

//设置反向遮罩图形
let maskSprite = new egret.Shape();
this.maskCon.addChild(maskSprite);
maskSprite.x = 0;
maskSprite.y = 0;
maskSprite.blendMode = egret.BlendMode.ERASE;
this.maskSprite = maskSprite;
this.maskGraphics = maskSprite.graphics;

this.clipBounds = new egret.Rectangle(0, 0, obj.width, obj.height);

this.maskRender = new egret.RenderTexture();
this.maskRender.drawToTexture(this.maskCon, this.clipBounds);

this.maskImg = new egret.Bitmap(this.maskRender);
this.maskImg.pixelHitTest = true; //镂空区域不响应点击,这样可以穿透点击到下面的背景
this.maskImg.scaleX = 4;
this.maskImg.scaleY = 4;

this.lightMatrix = new egret.Matrix();

//console.log("---------------- maskImg width = "+this.maskImg.width+" height = "+this.maskImg.height);
}

public clearMask(){
this.maskGraphics.clear();
this.maskRender.drawToTexture(this.maskCon);
}

public drawGradientCircle(radius)
{
radius = radius / 4;
this.lightMatrix.createGradientBox(radius*2, radius*2, 0, -radius, -radius);
this.maskGraphics.clear();
this.maskGraphics.beginGradientFill(egret.GradientType.RADIAL,
[0x0, 0x0, 0x0], [1, 0.8, 0], [0, 200, 255],
this.lightMatrix);
this.maskGraphics.drawCircle(0, 0, radius);
this.maskGraphics.endFill();

this.maskRender.drawToTexture(this.maskCon, this.clipBounds);
}
}
BUG截图

分享到 :
0 人收藏

3 个回复

倒序浏览
zmd  登堂入室 | 2019-6-13 17:59:59
C:\Users\Administrator\AppData\Roaming\EgretLauncher\download\EgretNativeSupport/
可以对应去你的这个目录,去找以前的旧版本,替换掉就可以了。

点评

谢谢  发表于 2019-6-25 11:10
alexhy  登堂入室 | 2019-6-25 11:20:54
发现最后能正常使用的原生库是0.1.15版本,ios和android都是,之后的版本drawToTexture方法重复调用,会出现清空绘制区的异常。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部