我们先做一个画线游戏,所谓画线,那么最重要的是要把线给画出来.在FLASH CS3中,怎么在主舞台上画出线条呢?
有人说:用画笔工具.
我:.....................(拖下去打)
我:这里当然是要用代码来写拉,还用画笔工具,不把你拖下去打干嘛.
第一大步:画线
我们先定义一个实例.然后ADD,接着解释出 lineStyle也就是线条规格.这里要详细的说下lineStyle命令里的写法.当你lineStyle再加个括号后,代码行自然会显示出提示:
thickness: 请填写数字,这里代表的是线条的粗细度.
color: 请填写颜色,要注意的是0XFFFFFF,是"零XFFFFFF",而不是"噢XFFFFFF".
alpha: 填写0-1之间的数字,表示的是线条透明度.如果是0.7的透明度,你可以写成 .7
后面还有好几个大选项,你可以不填,默认就行,如果想更加清楚的知道这个意思,请查阅帮助文档.
在定义lineStyle之后,就是定义graphics,就是线条该怎么呈现啊,等等.
graphics.moveTo:代表着画面从哪里开始.moveTo(X轴,Y轴) ;
graphics.lineTo:代表画线到哪里.lineTo(X轴,Y轴) ;
上代码(自己把代码加到动作面板就行了,下面的代码都是这样,为了方便介绍,并且方便你调试.我就没写成类):
var lines :Sprite = new Sprite ();
addChild(lines);
lines.graphics.lineStyle(10,0x0099ff,1);
lines.graphics.moveTo(50,50);
lines.graphics.lineTo(50,350);
lines.graphics.lineTo(400,350);
lines.graphics.lineTo(400,50);
lines.graphics.lineTo(50,50);
你可以看到在一条蓝色方框线条在主舞台上呈现出来了。祝贺你终于走出了这重要的第一步,也是最重要的一步,庆祝下,我去喝点酒.
恩,恩,要看第二步吗?请发短信:联通用户按"1"到:XXXXXXX,移动用户按"2"到:FFFFFFFF,或者明天再来,呵呵,开玩笑.
第二大步 让我自由的画线吧
我们的野心远远不止于此,怎么光一个方框就能解决问题呢?继续,我想要自由的画啊画,那又该怎么做?OK,OK,OK重头戏来了。在FLASH CS3中,最重要的监听事件addEventListener荣誉登场,你说,这玩意该怎么弄?听我慢慢道来,
先很形象的解释下什么叫addEventListener监听事件.就是盯着你,看你到底干什么了,根据你干了什么,调出一个程序来.比如,我看着美女,然后做出行动.那么监听对象就是我,事件是我对美女干了啥,代码就是:
我.addEventListener(看下美女,看了会怎么样);
我.addEventListener(朝着美女走过去,走过去会怎么样);
我.addEventListener(摸下美女,摸下会怎么样);
function 看了会怎么样():void{
美女白眼了下我
}
function 走过去会怎么样():void{
美女拿起棒子
}
function 摸下会怎么样);():void{
我被扁
}
哈哈,很形象吧。哦,好象说远了,回到美丽的线条上来.继续跟线条死磕。那么我要随意的在舞台上画线,也就是在我鼠标按的时刻和地方开始画线,根据鼠标移动的路径来画出线条。我们就要知道在主舞台上什么时候鼠标按下左键,什么时候移动,什么时候松开鼠标左键,再根据鼠标的行为,调用程序。上代码:
var lines :Sprite = new Sprite ();
addChild(lines);
stage.addEventListener(MouseEvent.MOUSE_DOWN,lineBegin);
stage.addEventListener(MouseEvent.MOUSE_UP,lineEnd);
function lineBegin(event:MouseEvent):void{
lines.graphics.lineStyle(10,0x0099ff,1);
lines.graphics.moveTo(mouseX,mouseY);
stage.addEventListener(MouseEvent.MOUSE_MOVE, lineDraw);
}
function lineDraw(event:MouseEvent):void{
lines.graphics.lineTo(mouseX,mouseY);
}
function lineEnd(event:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, lineDraw);
}
调试下看看吧。
要注意的是,我这里还用到removeEventListener,这是移除监听事件,因为我需要在鼠标松开左键后,停止画线。
如果我画了很多线条了,整个舞台都是乱七八糟的了,该怎么清空呢?也简单,在主舞台上加一个BUTTON,实例命名为:btn 再在刚才最后的地方加上代码:
btn.addEventListener(MouseEvent.CLICK,lineClearn);
function lineClearn(event:MouseEvent):void{
lines.graphics.clear();
}
这样一个最基本的画线程序完成了。
你说:艾,这怎么成了画图工具拉,你不是说游戏吗?
的确,这也是画图工具的程序,其实只要在程序里有用到线条功能,就会用到我所写的那些代码。
第三步 让我们玩点小花样
我需要在画线的时候,线条有一些特效,比如阴影拉,随机颜色等等。那该怎么做呢?那就更简单了。我们这里首先需要 import flash.filters.* 把那些滤镜CLASS导入。我们先来试试阴影效果该怎么做,上代码
lines.filters = [new DropShadowFilter()]
就这么一句,这么简单。值得注意的是,要把这段代码加到lineBegin Function里头。别忘了,试试看吧。滤镜还有很多,你自己可以试着看看,比如BLUR怎么弄(lines.filters = [new BlurFilter()]),里面的参数怎么弄,那就看你自己了。
第一部分总结:这一部分的内容是最基础的东西,主要讲的是线条的产生,样式,和如何画出你需要的线条(有阴影的,有模糊效果的等等)。第二部分,等明天,或者后天。反正这是一个游戏,像一个小球掉下来,我画条线,他就可以碰撞到线条,然后反弹这样。
[swf]/attachment/flash/1182755473_0.swf[/swf]8月20日PS:我这写文章都是一次性写完的,里面的代码肯有很多地方不正确,你直接COPY调试错误的可能性很大。你最好还是老实的把文章看完,然后按照"自己的想法"重新去完成。我觉得这个才是最重要的,这一次我重新更新了下代码把多余的括号给去掉,然后把BUTTON组件放到最上层,省的被画线遮盖住.注意我重新把代码全放一遍,这次绝对正确:
var lines:Sprite = new Sprite ();
addChild(lines);
stage.addEventListener(MouseEvent.MOUSE_DOWN,lineBegin);
stage.addEventListener(MouseEvent.MOUSE_UP,lineEnd);
function lineBegin(event:MouseEvent):void{
lines.graphics.lineStyle(10,0x0099ff,1);
lines.graphics.moveTo(mouseX,mouseY);
stage.addEventListener(MouseEvent.MOUSE_MOVE, lineDraw);
}
function lineDraw(event:MouseEvent):void{
lines.graphics.lineTo(mouseX,mouseY);
}
function lineEnd(event:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, lineDraw);
}
btn.addEventListener(MouseEvent.CLICK,lineClearn);
//注意,注意,这一句是我新加上的,意思后就是让btn永远在lines之上,这样画线就不会遮住按妞了.要是被遮
//住了,你来找我,我请你吃羊肉串.
this.swapChildren(btn, lines);
function lineClearn(event:MouseEvent):void{
lines.graphics.clear();
}
作者:gdgzboy@牛C网
地址:http://www.niuc.net/post/201/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
牛C网推荐您再看看以下日志:
Flash教程-纯AS代码制作的燃烧的火焰效果
FLASH学习资料
避免在ActionScript中使用整型(ints)
FLASH CS3 BUTTON组件应用开发(二)
Flash电子杂志常用滚动区域控制代码
广州市招收Flash及Flex开发员
Flash CS3 BUG
酷女
YAHOO MAP API官方组件已经发布
Flash 9与Flash 8对比测试
Flash教程-纯AS代码制作的燃烧的火焰效果
FLASH学习资料
避免在ActionScript中使用整型(ints)
FLASH CS3 BUTTON组件应用开发(二)
Flash电子杂志常用滚动区域控制代码
广州市招收Flash及Flex开发员
Flash CS3 BUG
酷女
YAHOO MAP API官方组件已经发布
Flash 9与Flash 8对比测试
Flash实例-FLASH内部复制粘贴图形
FLASH CS3 BUTTON组件应用开发(一)





