graphics颜色重叠现象

龙心 2011-11-25 09:15:45
各位辛苦了。
我在利用graphics画图像的时候遇到如下问题:
首先我用graphics画出一个大区域的图形(边长500的正方形),参数设置如下(100,100,500,500),背景色为绿色(0x00FF00),颜色可以任意指定。
接着我在此正方形上再利用graphics画一个相对较小的图形(边长100的正方形),参数设置如下(150,150,100,100),颜色为蓝色(0x00FFFF)。
打开画面后发现重叠部分的颜色发生了变化,小正方形的颜色由于颜色重叠导致改变了原来的颜色。
原来想先将小正方形区域的颜色清除掉,再画小正方形的,但是还没有找到实现的方法。
如果各位有好的思路或方法,请多多指教。
参考代码如下:
var sprite:Sprite = new Sprite();
prite.graphics.beginFill(0x00FF00, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(100, 100, 500, 500);
sprite.graphics.beginFill(0x00FFFF, 1);
grp.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(150, 150, 100, 100);
sprite.graphics.endFill();
...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinje 2011-12-07
  • 打赏
  • 举报
回复
楼主是不是把对象的alpha降低了?
如果对象是半透明,那一定是出现重叠想象。
龙心 2011-12-07
  • 打赏
  • 举报
回复
真冷清哇。。。
龙心 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xinje 的回复:]
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0x00FF00, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(50, 50, 500, 500);
sprite.graphics.beginFill(0x0000ff, 1……
[/Quote]
说明一下,这和具体颜色没有关系。情况是用同一个sprite对象(也可以是不同sprite对象)在相同区域内画图片,如果在这个区域设置了不同的填充色,则这两个填充色会相互重叠。比如先填充红色,再在此区域填充蓝色,则重叠部分的蓝色并不是你所设置的蓝色了。由于颜色重叠的关系,看上去颜色会发生变化。我的目的是防止这种现象的发生。
龙心 2011-11-29
  • 打赏
  • 举报
回复
首先感谢你的回答,经过测试发现颜色重叠现象仍然存在,具体原因还不是很清楚。继续期待。。。
sandytao 2011-11-29
  • 打赏
  • 举报
回复
var sprite:Sprite = new Sprite();
prite.graphics.beginFill(0x00FF00, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(100, 100, 500, 500);
sprite.graphics.endFill(); //结束一次后,就不会出现重叠变成空颜色了。
sprite.graphics.beginFill(0x00FFFF, 1);
grp.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(150, 150, 100, 100);
sprite.graphics.endFill();
xinje 2011-11-29
  • 打赏
  • 举报
回复
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0x00FF00, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(50, 50, 500, 500);
sprite.graphics.beginFill(0x0000ff, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(0, 0, 100, 100);
sprite.graphics.endFill();
楼主试试这个。说实话我可能没有理解你的意思。“颜色为蓝色(0x00FFFF)”蓝色应该是0x0000ff吧。
xinje 2011-11-25
  • 打赏
  • 举报
回复
var sprite:Sprite = new Sprite();
prite.graphics.beginFill(0x00FF00, 1);
sprite.graphics.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(100, 100, 500, 500);
sprite.graphics.endFill(); //结束一次后,就不会出现重叠变成空颜色了。
sprite.graphics.beginFill(0x00FFFF, 1);
grp.lineStyle(1,0x000000,1);
sprite.graphics.drawRect(150, 150, 100, 100);
sprite.graphics.endFill();

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧