lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 227|回复: 2

纹理问题,请大侠指导

[复制链接]

1

主题

1

好友

10

积分

士兵

Rank: 1

发表于 2018-9-21 06:39:11 |显示全部楼层
我想加载一张图片,该图片是300*300的,但是我想让它缩放到100*100的矩形里面,LBitmapData(imglist["face1"],0,0,100,100),这样的图片数据是没有缩放的,要怎么样才可以缩放?
因为我要用半径为50的圆来显示这张图片,所要以用到纹理
原图是这个 wx.png

如果是这样:cLayer = new LSprite();
backLayer.addChild(cLayer);
bitmap = new LBitmapData(imglist["face1"],0,0,100,100);
cLayer.graphics.beginBitmapFill(bitmap);
cLayer.graphics.drawArc(4,"#ff0000",[50,50,50,0,2*Math.PI]);
效果是这样: 1.png


如果是这样;
cLayer = new LSprite();
backLayer.addChild(cLayer);
bitmap = new LBitmap(new LBitmapData(imglist["face1"],0,0));
bitmap.scaleX = 100 / bitmap.width;
bitmap.scaleY = 100 / bitmap.height;
cLayer.graphics.beginBitmapFill(bitmap.bitmapData);cLayer.graphics.drawArc(4,"#ff0000",[50,50,50,0,2*Math.PI]);

也是上面的效果,请问怎么样才可以把一个原图的BitmapData变成缩放后的BitmapData呢?
回复

使用道具 举报

1

主题

1

好友

10

积分

士兵

Rank: 1

发表于 2018-9-21 17:15:44 |显示全部楼层
问题解决了,我还写了一个函数,可以用这个方式给所有的形状贴图,附上代码

function circleImage(image,r){
    layerCircle = new LSprite();
    var bitmap = new LBitmap(new LBitmapData(image,0,0));
    bitmap.scaleX = r * 2 / bitmap.width
    bitmap.scaleY = r * 2 / bitmap.height
    var bitmapData = new LBitmapData(null, 0, 0,r * 2,r * 2);
    bitmapData.draw(bitmap);
    layerCircle.graphics.beginBitmapFill(bitmapData);
    layerCircle.graphics.drawArc(1,"#ff0000",[r,r,r,0,2*Math.PI]);
    layerCircle.addChild(bitmapData);
    return layerCircle
  }
回复

使用道具 举报

36

主题

5

好友

8336

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2018-10-2 05:36:00 |显示全部楼层
zzz220918 发表于 2018-9-21 17:15
问题解决了,我还写了一个函数,可以用这个方式给所有的形状贴图,附上代码

function circleImage(image,r ...

不好意思,最近没怎么上论坛,
还有一种方法,就是用mask,比你上面的方法会更简单一点
不回答与技术和引擎不相关的问题
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2018-12-11 00:26 , Processed in 0.085217 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部