9RIA.com天地会 - 论坛

返回列表 发帖

天地培训

9RIA天地会官方培训机构

Adobe官方认证培训中心

老外的DD,很强的画板

http://www.myoats.com/create.aspx
随便画几笔就产生漂亮的几何图形
里面的那个类似钢笔节点的效果是怎么弄的,恳请大家指教






[ 本帖最后由 dong8692 于 2008-8-2 23:19 编辑 ]

天地人才库
真是漂亮... 顶........
much asking why ???

TOP

果然够强悍

TOP

好兄弟,讲义气!---by eko

踏上天地会荣耀之路!

 

申请舵主

加入掘金队

加入译林军

知识专题整理

 

咨询(QQ):

1442604479(小地)

 

酷的效果,有实现的源码吗?

TOP

没有啊,想不明白他是怎么做的像钢笔调整一样的节点功能。

TOP

好东东,可惜做不出。

TOP

呵呵,好东西

TOP

很好,很强大~~
如果能有代码研究就好了。

TOP

很简单啦。。 汗死。。

TOP

能不能下载下来????

TOP

类似于PS画笔的东西?

TOP

我想原理可能是这样的:节点(初始为鼠标mouseDown和mouseUp两个)为要记录的值存入变量,然后要根据这些变量的值调用写好的画线方法(对称算法,这是核心)来响应鼠标消息重绘
这是我观后的想法,抛砖引玉,供大家参考
come on!

TOP

不错的东西。。顶顶顶

TOP

。。画完怎么生成啊??

TOP

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 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

返回列表