Flash AS影片绘画方法的简单运用

  Flash MX又增强了其绘图功能,现在,可以使用AS影片对象中的绘画方法让Flash根据程序绘制图形,十分的方便。本文中笔者将通过几个实例来给大家讲解如何使用绘画方法来绘制图形及其相关的知识和技巧。

  源文件下载:点击这里下载源文件(7K, winzip压缩文件)

  效果预览:

  圆形1

  圆形2

  矩形3

  为了使读者很好的理解下面的内容,我们先来做一个简单的例子——画一条直线。可能有的朋友会说,画一条直线谁不会啊。不是的,是让Flash自己画一条直线。

  打开Flash,点选第1帧,按F9打开“动作面板”,输入如下代码:

// 设置线条样式
_root.lineStyle(3,0xF12345,100);
// 设置线条起点
_root.moveTo(50,0);
// 绘制线条
_root.lineTo(100,0);

  执行一下代码,你将会看到,Flash自动从点(50,0)开始,到点(100,0)结束,绘制一条线宽为3个像素的红色横线。

  现在,我们深入些,让Flash画一个圆。设计这个实例不需要做任何元件,只需要编写几段简单的代码即可。打开Flash MX,分别点选第2、第3帧,按F7插入空白关键帧,如图1所示。

 图1

  分别点选第1、2、3帧,按F9打开“动作”面板,键入如下代码。其实,这三帧中的代码可以和到一帧中,但为了能使大家更清楚地了解这些代码是如何工作的,笔者把这些代码拆分开来讲解。

  第1帧代码:

// 指定一个线条样式
i=-Math.PI;
_root.lineStyle(2,0x000000,50);
_root.moveTo(50,100);

  代码解析:

  绘画方法lineStyle的用法为myMovieClip.lineStyle ([thickness[,rgb[,alpha]]])。其作用是指定一个线条样式,以便lineTo和curveTo方法的后续调用,直到使用其他参数调用lineStyle为止。也可以在绘制路径的中间调用lineStyle方法来为路径中的不同线条段指定不同的样式。

  其中,thickness是一个整数,以磅为单位指示线条的粗细,有效值为0到255。如果未指定数值,或者该参数为undefined,则不绘制线条。

  rgb是线条的十六进制颜色值(如,红色为 0xFF0000,蓝色为 0x0000FF)。如未指示该值,则默认使用0x000000(黑色)。

  alpha也是一个整数,该参数控制线条颜色的Alpha值,有效值为0到100。如果设置该值,则使用100(纯色)。如果该值小于0,则使用0;如果该值大于100,则使用100。

  绘画方法moveTo的用法是myMovieClip.moveTo (x,y)。其作用是将当前绘画位置移到(x,y),也就是设置绘制图像的原点。如果缺少任何一个参数,则此方法将失败,并且当前绘画位置不改变。参数x(y)是一个整数,指示相对于父影片剪辑的注册点的水平(垂直)位置。_root.moveTo(50,100)就是在x坐标为50个单位,y坐标为100个单位的地方作为起点开始绘制图形。

  第2帧代码:

// 绘制线条
_root.lineTo(100+50*Math.cos(i),100+50*Math.sin(i));
i+=0.05;

  代码分析:

  绘画方法lineTo可以使用线条样式从当前绘画位置向点(x,y)绘制线条;当前绘画位置随后被设置为(x,y)。如果正在其中绘制的影片剪辑包含用绘画工具创建的内容,则调用lineTo将在该内容下面进行绘制。如果在对moveTo方法进行任何调用之前调用了lineTo方法,则当前绘画位置默认为(0,0)。如果缺少任何一个参数,则此方法将失败,并且当前绘画位置不改变。参数x(y)是一个整数,指示相对于父影片剪辑的注册点的水平(垂直)位置。

  Math.sin(x)计算并返回以弧度为单位指定的角度的正弦值。参数x是以弧度为单位的角度值。

  第3帧代码:

// 循环
if (i<Math.PI) {
    gotoAndPlay(2);
} else {
    stop();
}

  Math.PI是一个常数,代表一个圆的周长与其直径的比值的数学常数,也就是3.1415……。

  代码到这里就编写完毕了。当测试的时候,大家可以看到,Flash从点(50,100)开始,绘制一个线宽为2个单位,黑色,半径为50个单位的圆。如图2所示。

  如果你想在1帧中完成所有的事情,编写如下代码即可:

_root.lineStyle(2, 0x000000, 50);
_root.moveTo(150, 100);
function c() {
    _root.lineTo(100+50*Math.cos(i), 100+50*Math.sin(i));
    i += 0.05;
}
if (i<Math.PI) {
// 每隔50毫秒执行一次函数c
    setInterval(c, 50);
} else {
    stop();
}

  教个大家这段代码,主要有两个用意。其一,学习setInterval()的使用方法。该动作在播放影片时,每隔一定的时间间隔,就调用函数、方法或对象。使用这个动作还可以用来更新来自数据库的变量或更新时间显示。其二、笔者把圆形绘制的起点改动了一下,如图3所示。这样,绘制线条的位置就变动了。在绘制图形时,图形的位置控制和预知是很重要的,否则将会一团糟。

  大家已经学习了如何绘制图形了,那,怎么给绘制的图形着色呢?下面,我们来给一个矩形着色。打开Flash,点选第1帧,按F9打开“动作面板”,输入如下代码:

// 设置填充色
beginFill(0xFF0000,100);
lineStyle(3,0xFF9900,100);
moveTo(100,50);
lineTo(200,50);
lineTo(200,150);
lineTo(100,150);
lineTo(100,50);
// 结束着色
endFill();

  代码分析:

  绘画方法beginFill:指示新的绘画路径的开始。myMovieClip.beginFill([rgb[,alpha]])。参数gb是一个十六进制颜色值(例如0xFF0000)。如果未提供或未定义该值,则不创建填充。参数alpha是介于0到100之间的整数,指定填充的Alpha值。如果未提供该值或值大于100,则使用100(纯色)。如果该值小于0,则使用0。

  与beginFill相似的绘画方法BeginGradientFill决定了填色形式、色彩、透明度、比例和矩阵值。用法为:myMovieClip.beginGradientFill (fillType, colors, alphas, ratios, matrix)。其中,fillType为字符串linear或字符串radial。Colors是一个数组,包括要在渐变中使用的RGB十六进制颜色值。Alphas也是一个数组,包括与 colors 数组中颜色相对应的Alpha值。ratios颜色配额的数组;有效值为0到255。该值按100% 定义了对颜色进行采样处的宽度的百分比。Matrix是一个变形矩阵。

  好了,本文到这里就结束了。希望能对喜好使用Flash绘画的朋友有所帮助。

时间: 2024-12-31 08:22:14

Flash AS影片绘画方法的简单运用的相关文章

Flash脚本的编写方法及基本脚本的使用

脚本 一.关于如何编写flash中的脚本 首先,要知道编写脚本,不需要用户对AS有完全的了解! 现在要考虑的问题是,如何在你的flash中添加编写脚本?简单的说,添加脚本可分为两种:一是把脚本编写在时间轴上面的关键桢上面(注意,必须是关键桢上才可以添加脚本).二是把脚本编写在对象身上,比如把脚本直接写在MC(影片剪辑元件的实例)上.按钮上面. 此外,大家也需要简单理解一下flash是如何执行你编写的脚本的.当你在时间周的关键桢上添加了脚本,那么当flash运行的时候,它会首先执行这个关键桢上的脚

在PPT中插入Flash动画四种方法

  现在很多学科经常要做一些研究性学习或者调查报告,使用Powerpoint是个不错的主意. 而很多时候,我们需要添加一些flash动画来使我们的幻灯片更加生动.美观和具有说服力.但是Powerpoint中没有提供类似插入图片那样直接的功能.那么如何在PPT中插入flash动画影片呢? 下面我来教你四种方法: 方法一 将扩展名为. SWF的Flash动画文件插入PPT ---插入一个由文件创建的对象 ---在"动作设置"中的"对象动作"选项中选择"激活内容

photoshop利用绘画方法制作立体岩石字效果教程

给各位photoshop软件的使用者们来详细的解析分享一下利用绘画方法制作立体岩石字效果的教程. 教程分享: 首先我们需要的工具有数位板 当然没有数位板也可以做 就是有点麻烦 好了 先我们找个素材 背景素材 大家随便找   这是在网上找的一个素材 大家自己看着办 然后我们提亮   曲线提亮 这个很简单 然后可选颜色调整一下整个色调 其实大家随意 最后调整也行   不要问我怎么调整的 我们今天主要讲合成作图 然后我用画笔画了个模型 如果用字体直接打上去 然后栅格化字体就太小孩子了呵呵   看我画的

执行文件方式加密FLASH文件的解密方法

工具:OD Lordpe 16进制编辑器 程序:多彩的夏天.exe 目的:从EXE文件中导出SWF,之后可以进行反编及修改操作 说明:为了研究需要而处理的.不敬之处请您谅解. 1.OD导入程序. 停在这里 004B556B > $ 6A 60 PUSH 60 004B556D . 68 30805300 PUSH 多彩夏天.00538030 004B5572 . E8 E9EBFFFF CALL 多彩夏天.004B4160 004B5577 . BF 94000000 MOV EDI,94 00

使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)_javascript技巧

在网站开发中,经常会简单使用js代码来判断字符串中有多少汉字的功能.今天小编抽时间给大家分享实现代码.废话不多说了,直接给大家贴代码了. $("form").submit(function () { var content = editor.getContentTxt(); var sum = 0; re = /[\u4E00-\u9FA5]/g; //测试中文字符的正则 if (content) { if (re.test(content)) //使用正则判断是否存在中文 { if

以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂

以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂,这是我个人觉得是一种比较简单易懂的json数据解析方法: 看下其中一个类的代码 package com.example.text_json_deno_model; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;

编程-java调用方法的简单问题

问题描述 java调用方法的简单问题 小弟刚刚自学java,在学习时遇到一个编程题,问题是y=x+3(x>0) =0(x=0) =x*x-1(x>0) 这是小弟编的代码, 这是报错 恳请大神帮助,!!! 解决方案 public class byt2 { public static void main(String[] args) { int x=3; int y = 0; if (x>0){ //int y=getYa(x); 已经定义过y,无需再定义了 y = getYa(x); }e

浅谈python字符串方法的简单使用_python

学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >>> s = 'wwwwww' >>> scap = s.capitalize() >>> scap 'Wwwwww' (2)s.center(width,char); 功能:返回将s字符串放在中间的一个长度为width的字符串,默认其他部分用空格填充,否则使用c

借助JavaScript脚本判断浏览器Flash Player信息的方法_javascript技巧

今天研究了点Flex技术,做了一个小的Demo,在测试时发现经常报错,网上一查发现是浏览器Flash Player版本较低造成(需要10及其以上的版本)的,对此总结了一下借助JavaScript脚本判断浏览器Flash Player信息的方法: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JavaScript判断浏