|
  
- 精华
- 0
- 积分
- 235
- 威望
- 15 点
- 银子
- 227 两
- 金子
- 0 两
- 来自
- 西安市
|
15#
发表于 2008-8-10 00:42
| 只看该作者
bitmap.draw() 效果吧。
bitmap.draw() 效果吧。应该和万花筒是一回事,默认值是5个镜片。
形状复制:将你画的 东东,沿中心旋转,出另外四份,位图 draw 一下,叠加到一起。
线条的平滑:将鼠标拖动中的点记录下来,当控制点,每1/2为一个曲线的起止点,以曲线相连,达到平滑的效果。
鼠标控制点:因为是数据是先画在 sprite 里的,所以可以用碰撞检测,并且模拟相关数据。
简单模拟了一下,代码发在这里,XD 们参考一下。
//第一版,实现一个画线功能.
//第二版,添加一个位图,在鼠标移动时,将 spBrush 旋转,再将 spCont 画到位图中去。
var spCont:Sprite = new Sprite();
var spBrush:Sprite = new Sprite();
spBrush.x = 550/2;
spBrush.y = 400/2;
trace( spBrush.x,spBrush.y );
spCont.addChild( spBrush );
addChild( spCont );
var canDraw:Boolean = false;
var pen:Graphics = spBrush.graphics;
//第二版 添加复制代码
var bmd:BitmapData = new BitmapData(550,400,true,0x00ffffff );
var image:Bitmap = new Bitmap( bmd );
addChild( image );
var mirror = 5;// 定义5个镜片
function showInMirror() {
var angStep = 360 / mirror;
bmd.draw( spCont );
for( var i:int = 1;i < mirror; i++){
spBrush.rotation = angStep * i;
bmd.draw( spCont );
}
spBrush.rotation = 0;
}
//
stage.addEventListener( MouseEvent.MOUSE_DOWN, onMD );
stage.addEventListener( MouseEvent.MOUSE_MOVE, onMV );
stage.addEventListener( MouseEvent.MOUSE_UP, onMU );
function onMD(evt:MouseEvent ) {
canDraw = true;
pen.lineStyle( 1,0xff0000,0.8);
pen.moveTo(spBrush.mouseX, spBrush.mouseY);
}
function onMV( evt:MouseEvent ) {
if ( canDraw ) {
pen.lineTo( spBrush.mouseX, spBrush.mouseY );
showInMirror();
}
}
function onMU( evt:MouseEvent ) {
if ( canDraw ) {
pen.lineTo( spBrush.mouseX, spBrush.mouseY );
showInMirror();
pen.clear();
canDraw = false;
}
}
楼主的绘图能力很强啊,同样的工具,我怎么就画不出好图呢?
[ 本帖最后由 richard 于 2008-8-10 16:16 编辑 ] |
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
|