ActionScript 3使用Sprite实现图层的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionScript 3使用Sprite实现图层的问题相关的知识,希望对你有一定的参考价值。
在使用AS3设计一个简单的游戏引擎时遇到这么一个问题:
我想实现多图层的效果。比如,最底层的是地图(层1)。它上面一层是角色(层2)。这两个层分别用Sprite的实体化来实现。其中,当角色没有位置移动的时候,层1不必重复渲染。角色本身是不断变化的,比如拿着武器挥舞,因此层2每帧都会变化。
var Layer1:Sprite = new Sprite(); //层1
var Layer2:Sprite = new Sprite(); //层2
mainSprite.addChild(Layer1); //将层1加入到主Sprite中
mainSprite.addChild(Layer2); //将层2加入到主Sprite中
地图和角色都是像素构建的位图,使用BitmapData来实现。为了平滑过渡,系统使用双缓冲。
层1缓冲var backBuffer1:BitmapData = new BitmapData(800,600);
层2缓冲var backBuffer2:BitmapData = new BitmapData(800,600);
每次都是将变化写到后台缓冲中,然后一次性将图片拷贝到Layer1和Layer2中:
//Layer1拷贝代码
Layer1.graphics.clear();
Layer1.graphics.beginBitmapFill(backBuffer1, null, false, false);
Layer1.graphics.drawRect(0, 0, 800, 600);
Layer1.graphics.endFill();
//Layer2拷贝代码
Layer2.graphics.clear();
Layer2.graphics.beginBitmapFill(backBuffer2, null, false, false);
Layer2.graphics.drawRect(0, 0, 800, 600);
Layer2.graphics.endFill();
于是,问题来了:
Layer2会把Layer1完全遮住,即使Layer2中的图片填充不满,也不能看到Layer1的图片,无法实现角色在地图上的效果。
我认为问题出在beginBitmapFill这个函数不能实现未绘图的部分进行透明处理。有什么解决方法?
后面还有两个参数的 fillColor 设成 0x00000000本回答被提问者采纳
以上是关于ActionScript 3使用Sprite实现图层的问题的主要内容,如果未能解决你的问题,请参考以下文章
Actionscript 3.0 中的 MovieClip 与 Sprite
调整 Sprite Flex/ActionScript 的大小
使用 Flex 附加带有 ActionScript3 的 Sprite
在 flex 中使用 Actionscript (MovieClip) 类