制作中国水墨画板flash应用.docx
- 文档编号:8518542
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:1.07MB
制作中国水墨画板flash应用.docx
《制作中国水墨画板flash应用.docx》由会员分享,可在线阅读,更多相关《制作中国水墨画板flash应用.docx(13页珍藏版)》请在冰豆网上搜索。
制作中国水墨画板flash应用
FLASHACTIONSCRIPT2.0制作中国水墨画板应用
我酷爱画中国水墨画,但是画画前要准备笔墨纸砚,又占空间又耗时间,如何快速创作是个问题,想到网上找找有没有这方面的软件,但是试用过PS,PAINTER等一些常见绘画软件都不甚理想,他们的开发者似乎不甚理解中国画的特性,因此所作出的笔触根本达不到中国水墨画的效果。
自己动手,丰衣足食。
用FLASH和现学的一点ACTIONSCRIPT2.0语言,开发了一下这么一个我自认为是很精悍的小应用,与大家分享,高举弘扬中华文化的大旗。
如要拍砖、若或索宝,请发邮件至425767786@。
中国水墨画笔触变幻多端,要模拟中国水墨画的笔触关键在两点:
笔触有一定程度的随机变化特性,笔触有水墨扩散晕染的特性。
把握着两大特性才能最有效的解决一般画笔死板僵硬固定的模式,最大限度的再现中国画风格。
目前模拟水墨画笔触主要算法有:
元胞自动机,流体力学。
但是这两种算法需要耗费计算机巨大的运算能力,不适用于做小应用。
为此,我采用了一种简化元胞自动机的办法。
暂且称之谓实时交互元胞自动机简化模式。
具体的思路是这样的:
微分:
笔迹——》笔触点——》水墨扩散元点
积分:
水墨扩散元点——》笔触点——》笔迹
此中主要运用的是积点成线的原理。
一个基本的水墨扩散元点,变幻叠加连贯就成了一条水墨笔迹。
这一想法归功于与我以前几年的国画学习,感谢毕业于中国美院的王建华我的老师。
中国水墨画笔迹是随意挥洒的,笔画有轻重缓急,墨色有焦浓重淡清。
有随机性和难以复制的特点。
因为水墨扩散的随机性,以及画家本人下笔的掌控能力的局限性,画面呈现出自然变化和人的控制之间的矛盾对立,正式这种矛盾对立体现了中国传统的天人合一,天人交互,无为而治,天道贵和的思想,既不过分极端地强加人工的力量,又有自强不息的精神,追求和谐,崇尚自然。
具体制作流程:
添加四个图层:
BRUSH,BUTTONS,BACKGROUND,SCRIPT分别用于存放画笔,按钮,背景和脚本。
绘制元件:
MOUSE_MC,COLOR1_BTN,PRINTER分别为画笔、颜色选择按钮、打印机按钮。
SCRIPT图层动作面板中写入代码:
//SCRIPT图层动作面板中代码
help_mc._visible=false;//隐藏帮助文字
importflash.geom.*;
this.createEmptyMovieClip("mh_mc",this.getNextHighestDepth());
mh_mc._x=700;
mh_mc._y=550;
varcolor:
Array=[0x111111,0x666666];
varalph:
Array=[100,0];
varrotio:
Array=[0,255];
varmatrix=newMatrix();
matrix.createGradientBox(-20,-20,0,10,10);//这里要填充的形状注册点是(0,0)这样就算出了-20,和-40(调整后的)
mh_mc.beginGradientFill("radial",color,alph,rotio,matrix);
mh_mc.moveTo(0,10);
mh_mc.curveTo(-10,10,-10,-0);
mh_mc.curveTo(-10,-10,0,-10);
mh_mc.curveTo(10,-10,10,0);
mh_mc.curveTo(10,10,0,10);
mh_mc.endFill();
//前述部分创建画笔原型
//下述部分则为画图部分
vari=this.getNextHighestDepth();
vardrawing:
Boolean=false;
varbrushscale:
Number=10;
varbrushmode:
Number=1
//键盘监听
varkeyListener:
Object=newObject();
keyListener.onKeyDown=function(){
if(Key.getCode()==Key.UP){
if(brushscale<540){
brushscale++;
}
}
if(Key.getCode()==Key.DOWN){
if(brushscale>1){
brushscale--;
}
}
if(Key.getCode()==Key.LEFT){
brushscale=1
}
if(Key.getCode()==Key.RIGHT){
brushscale=540
}
if(Key.getCode()==Key.SPACE){
brushmode=1
trace("thisiskey1")
}
if(Key.getCode()==Key.SHIFT){
brushmode=2
trace("thisiskey2")
}
if(Key.getCode()==Key.CAPSLOCK){
brushmode=3
trace("thisiskey3")
}
mh_mc._width=brushscale;
mh_mc._height=brushscale;
}
Key.addListener(keyListener);
//上述为键盘监听
onMouseDown=function(){
drawing=true;
}
onMouseMove=function(){
if(drawing&&_ymouse<400){
mh_mc.duplicateMovieClip("mh"+i,this.getNextHighestDepth());
mh1_mc=eval("mh"+i);
mh1_mc._x=_xmouse;
mh1_mc._y=_ymouse;
if(brushmode==1){
varbrushscales=1+random(brushscale);
mh1_mc._width=brushscales;
mh1_mc._height=brushscales;
}
if(brushmode==2){
mh1_mc._width=1+random(brushscale);
mh1_mc._height=1+random(brushscale);
}
if(brushmode==3){
mh1_mc._width=brushscale;
mh1_mc._height=brushscale;
}
i++;
}
}
onMouseUp=function(){
drawing=false;
}
在BRUSH的动作面板中写入代码:
//BRUSH动作面板中代码
on(press){
Mouse.hide();
this.startDrag(true);
}
//上述代码实现画笔在点击后可跟随鼠标移动
在颜色点选按钮的动作面板中写入的代码:
//颜色点选按钮中的代码
on(release){
trace("1");
mh_mc.clear();
importflash.geom.*;
this._parent.createEmptyMovieClip("mh_mc",this.getNextHighestDepth());
mh_mc._x=700;
mh_mc._y=550;
varcolor:
Array=[0x000000,0x000000];
varalph:
Array=[100,0];
varrotio:
Array=[0,128];
varmatrix=newMatrix();
matrix.createGradientBox(-20,-20,0,10,10);//这里要填充的形状注册点是(0,0)这样就算出了-20,和-40(调整后的)
mh_mc.beginGradientFill("radial",color,alph,rotio,matrix);
mh_mc.moveTo(0,10);
mh_mc.curveTo(-10,10,-10,-0);
mh_mc.curveTo(-10,-10,0,-10);
mh_mc.curveTo(10,-10,10,0);
mh_mc.curveTo(10,10,0,10);
mh_mc.endFill();
}
PRINTER按钮动作面板中代码:
//打印按钮中代码
on(release){
printAsBitmap(this,"bframe");
}
//可实现打印
清空全部画面的按钮:
//清空画板代码
on(release){
varj=this.getNextHighestDepth();
for(j;j>=0;j--){
mh2_mc=eval("mh"+j);
mh2_mc.clear();
}
help_mc._visible=false;//清空帮助文本
}
//可以清空整个画板
帮助按钮
//帮助按钮代码
on(release){
help_mc._visible=true;
help_mc._x=0;
help_mc._y=0;
help_mc.swapDepths(this.getNextHighestDepth());
}
//帮助按钮代码
最后测试影片:
激动人心的时候到来了。
。
。
。
。
。
无论点、线、面,水墨笔触的效果均的到了良好的体现,而该SWF文件大小不超过30kb,便于传播。
水墨精灵使用说明:
通过按键盘和移动鼠标控制按住鼠标左键在画纸上拖动即可画出笔迹。
键盘上的键:
上箭头键加大画笔尺寸,下箭头键缩小画笔尺寸,左箭头键最小画笔尺寸,右箭头键最大画笔尺寸。
墨色及颜色则通过鼠标点选画板左下角区域相应色盘选取。
画板右下角会动态显示画笔的尺寸和颜色。
切换笔触样式:
单击键盘上的CapsLock,Shift,Space可以分别切换为:
平滑、毛糙、变幻三种不同笔触模式,分别适用于工笔、大写意和小写意风格。
毛笔的重按轻提:
按住鼠标左键在画纸上笔迹移动的同时持续点按键盘上的上下箭头键即可。
画板控制区有控制按钮:
“助”按钮显示帮助。
“空”按钮清空整个画纸。
“印”按钮可以打印当前所画的作品。
最后点击红色印章就可盖印。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 制作 中国 水墨 画板 flash 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)