发新话题
打印

[编程] [原创] FL新春新教程,绝对原创,非常适合初、中级学习者

本主题由 终极讨厌 于 2008-7-31 12:56 下沉
29。[Flash基础理论课06]制作移动角色[Key类]
复制内容到剪贴板
代码:
键盘控制角色移动
思路:1.使用键盘控制mc移动,如:Key.isDown(Key.RIGHT);
   
2.并且约定mc移动的范围:顶,底,左,右。
步骤1:

   
制作一个角色,保存为影片剪辑,实例名为"mc".
步骤2:
AS代码层:
var speed = 12;
//移动速度:每次移动的距离


var top = mc._height/2;

var bottom =
Stage.height-mc._height/2;

var left = mc._width/2;

var right = Stage.width-mc._width/2;

_root.onEnterFrame = function () {

  if (Key.isDown(Key.DOWN)
&& mc._y<bottom) {

   mc._y +=
speed;

  }

  if (Key.isDown(Key.UP)
&& mc._y>top) {

   mc._y -=
speed;

  }

  if (Key.isDown(Key.RIGHT)
&& mc._x<right) {

   mc._x +=
speed;

  }

  if (Key.isDown(Key.LEFT)
&& mc._x>left) {

   mc._x -=
speed;

  }

};



Flash充电:获取键盘字符方法
var ml = new
Object();
Key.addListener(ml);

ml.onKeyDown = function() {
   
var kd = Key.getAscii();

         
trace(kd)
}

//给ml这个Object添加一个键盘侦听,ml开始侦听按下Key的AscII码。


教程到此结束
QQ:147461195(FL基理大师)

TOP

30。[Flash基础理论课05]制作摇奖盘[onEnterFrame]
复制内容到剪贴板
代码:
思路:1.设一个变量,如:friction
用于设置摩擦力;
   
2.mc的移动速度每次乘以摩擦力,当摩擦力=1时,不会改变速度;
    当摩擦力小于1时,如:0.8,速度每次都要打8折,折上折直至零。
步骤1:

   
绘制摇奖盘,保存为影片剪辑,实例名为"mc";

   
绘制出二个按钮,保存为按钮,实例名分别为:"play_btn","stop_btn".
步骤2:
加入AS代码层:
var friction =
1;
//表示摩擦力,当friction=1,没有擦力;friction<1,开始拥有摩擦力


var speed = 70;
//圆盘转动的速度

var go = false;
//go=true,圆盘转动,go=false,圆盘停止;


_root.onEnterFrame
= function () {

if (go)
{

  speed =
speed*friction;
//也可写成speed*=friction


  mc._rotation +=
speed;

}

};

play_btn.onRelease = function() {

go = true;

speed = 70;

friction =
1;

};
//开始按钮


stop_btn.onRelease = function() {

  friction = 0.8;

};
//停止按钮

Flash充电1: onEnterFrame

理解:可以简单地理解成为"实时刷新",FPS(帧频)值影响其刷新速度;
定义:以 SWF
文件的帧频重复调用;
例如:

for(i=1;i<=10;i++){trace(i);}
//运行后立即显示 1~10;

设i初值为1
while(i<=10){trace(i);i++;}
//运行后立即显示 1~10;

设i初值为1
onEnterFrame = function(){
if(i<=10)
{ trace(i) }
  
i++;
};
//运行后间断显示
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10

Flash充电2:摩擦力实现原理
例如:speed=10;

     
friction=0.8;
onEnterFrame=function(){

   
speed=speed*friction

   
trace(speed)
}
显示结果:
10

8

6.4

5.12

4.096

3.2768

2.62144

2.097152

1.6777216

1.34217728

1.073741824

0.8589934592
speed
每一次都在原有的数字上面乘以0.8,也就是原有数字的80%。
speed
减小,且无限趋近于0,实现摩擦力效果



教程到此结束
QQ:147461195(FL基理大师)

TOP

31。[AS 功能代码教程05] 打字机效果及字符串概念 [FL基础理论大师]
复制内容到剪贴板
代码:
思路:1.首先用AS创造出动态文本框,用于输出文字;
   
2.用计时器,每隔一段时间累加输出下一个字符。
AS代码层:
_root.createTextField("output", 1,
0, 0, 500, 400);

var txt_f:TextFormat = new TextFormat();

txt_f.font = "宋体";
//设置字体

txt_f.color = 0x333333;
//设置文字颜色

txt_f.size = 22;
//设置文字大小

txt_f.bold = true;
//是否加粗

output.setNewTextFormat(txt_f);
//将设置好的属性赋给output


var timer = setInterval(display,
500);
//计时器,每0.5秒调用一次display函数

var txt:String = "输入要显示的字符串";

var i = 0;
//初始化


function
display() {

output.text +=
txt.charAt(i);
//每次文字累加
if
(i<txt.length-1) {

  i++;

} else {

  clearInterval(timer);

}

}
//每隔一段时间输出下一个字符,全部输出后,清除掉计时器



Flash充电1:字符串与数组下标相同,都是从0开始的。


Flash充电2:字符串常用方法:
(1)String.charAt :
返回字符串中某个字符

   
s=new String("ABCDE");

     trace(s.charAt(3));

   
//输出结果为"D"

(2)String.charCodeAt
:返回字符串中某个字符的字码

   
s=new String("ABCDE");

   
trace(s.charCodeAt(3));

     
//输出结果为 68 .

   
(3)String.concat:
连接其他字符串

   
a=new String("CAT,");

   
b=new String("PIG,")

   
c=new String("DOG")

   
trace(a.concat(b,c))
    //输出结果为"CAT,PIG,DOG"
.

(4)String.indexOf :
寻找子字符串,并返回指针   

   
s=new String("ABCDEF");

   
trace(s.indexOf("CDE"))
    //输出结果为
2 .

(5)String.lastIndexOf :
并返子字符串最后出现位置的指针   

   
s=new
String("ABCDEFCDE");

   
trace(s.lastIndexOf("CDE")) ;

    //输出结果为
6 .

(6)String.slice
: 撷取字符串   

   
s=new String("ABCDEFGHI");

   
trace(s.slice(3,6)) ;

    //输出结果为
"DEF".

(7)String.split
: 将字符串转成数组   

   
s=new String("Bill,Bob,John,Tom");

   
ss=s.split(",")

     
trace(ss[2])

     //输出结果为
"John".

(8)String.substr
: 撷取字符串

   
s=new String("ABCDEFGHI");

    trace(s.substr(3,4))
;

    //输出结果为
"DEFG".

(9)String.toLowerCase
: 转换为小写字母

    s=new
String("ABCDEFGHI");

    trace(s.toLowerCase())
;

    //输出结果为
"abcdefghi".

(10)String.toUpperCase
: 转换为大写字母

    s=new
String("abcd");

   
trace(s.toUpperCase()) ;

    //输出结果为
"ABCD".


教程到此结束
QQ:147461195(FL基理大师)

TOP

32。AS 功能代码教程03] 基础三角函数及应用 [FL基础理论大师]
复制内容到剪贴板
代码:
1.坐标系:

Flash坐标系与数学坐标系:X轴相同,Y轴相反。

[数学坐标系]
[Flash中的坐标系]

2.角度制与弧度制的转换:

(1)弧度:弧度=角度*PI/180;

(2)角度:角度=弧度*180/PI;

*角度制多用于 ._rotation中

*弧度制多用于 sin(),cos(),atan()... ...

3.正弦、余弦、正切:
1>正弦:Math.sin(n);在Flash中多用其图像性质:


随X增长,Y取值为[0,1,0,-1,0]这个变化是周期性的。   

2>余弦:Math.cos(n);用法基本同上。


随X增长,Y取值为[1,0,-1,0]这个变化是周期性的。

3>正切:Math.atan2(y,x)
多用于求两点间的夹角。


Math.atan2(y,x)与Math.atan(n)功能相同只是返回值有所不同:

atan2(x,y)的返回值为一个数字

    atan(n)的返回值从
-PI/2 ~ PI/2


<<<
以上是一些理论知识,下面来看一些具体的应用实例
>>>
4.正弦实例:

思路:使用sin(n)控制mc的Y轴坐标
步骤1:

   
制作一个球型,存为MC,实例名为"Ball",放入舞台中。
步骤2:
加AS入代码层:
var A =
80;
//设置振幅

var centerY = 150;
//设置显示位置

var n = 0;
//累加变量

onEnterFrame =
function () {

ball._y =
centerY+A*(-1*Math.sin(n*Math.PI/180));
//改变ball的y坐标,呈现正弦震动


n += 10;

};


5.正切实例:

思路:使用tan2(x,y)求夹角,通过得出的夹角改变
mc._rotation。
步骤1:

   
绘制出眼,鼻,嘴作为背景;

   
画一个黑色圆作为眼珠,存为MC,实例名为"Reye",注册点在左中。

   
复制一个Reye,实例名为"Leye"作为另一个眼珠。
步骤2:
加AS入代码层:
Reye.onMouseMove = function()
{

var dx = _xmouse-this._x;

var dy =
_ymouse-this._y;
//获得鼠标与眼球的距离


var theta =
Math.atan2(dy,
dx);
//求夹角(弧度制)

this._rotation =
theta/Math.PI*180;
//转换为角度制


};

Leye.onMouseMove =
Reye.onMouseMove;
//Leye鼠标移动时的函数等于Reye鼠标移动时的函数


6.正弦和余弦综合实例:
1>画圆方法:


用cos(n)作为点x,x点从1~0~-1~0



用sin(n)作为点y,结合点x,[1,0]~[0,1]~[-1,0]~[0,-1]~[1,0]
沿着, X轴=cos(n),
Y轴=sin(n)的路线绘制出圆
1>AS画圆(重要):
思路:1.创建一个空的影片剪辑作为绘图的容器,在该影片剪辑中进行绘图;
   
2.角度(n) 从 0度到360度 递增;
   
3.X坐标为cos(n), Y坐标为sin(n); n
要为弧度制表示;
_root.createEmptyMovieClip("MC",
1);

MC._x = 200;

MC._y =
200;
//建一个空影片剪辑,并放入舞台中部,作为绘线的容器


var R =
60;
//圆的半径
MC.moveTo(R*Math.cos(0),
R*Math.sin(0));
//开始画线的起点

MC.lineStyle(2);

for (n=1; n<360; n++)
{

angle = n*Math.PI/180;

tox =
R*Math.cos(angle);

toy =
R*Math.sin(angle);
//圆的参数方程

MC.lineTo(tox, toy);

}

2>AS画正多边型(重要):
思路:1.多边形内角和等于360度;
   
2.根据边数,确定每个顶点的角度;
   
3.再根据角度确定每个顶点的位置,并连接各顶点。
_root.createEmptyMovieClip("MC", 1);

MC._x = 200;

MC._y = 200;

var R = 50;
//半径

var sides = 5;
//多边型边数

var angle =
(360*Math.PI/180)/sides;
//每等份 =
圆的弧度(360*PI/180)/sides份;

MC.moveTo(R*Math.cos(0),
R*Math.sin(0));
//绘制起点方在第一个角度上

MC.lineStyle(2)

for (n=1; n<=sides; n++)
{

var tox = R*Math.cos(n*angle);

var toy = R*Math.sin(n*angle);

MC.lineTo(tox,
toy);
//两点间连线

}

3>AS画螺旋线方法(阿基米德螺旋线):
思路:
1.利用极坐标知识;
2.阿基米德螺线的极坐标方程:
Ru(极径)=a(偏移量)*θ(极角);
3.可以简单理解为一个半径在不断增长的圆。
_root.createEmptyMovieClip("MC", 1);

MC._x = 200;

MC._y = 200;

var R = 10;
//半径长度

var a = 3;
//偏移量

MC.moveTo(0, 0);
//从圆心点开始绘制

MC.lineStyle(2);

for (n=1; n<360; n++)
{

var angle = a*(n*Math.PI/180);

var tox = angle*R*Math.cos(angle);

var toy = angle*R*Math.sin(angle);
//螺旋线的参数方程


MC.lineTo(tox, toy);

}


Flash 充电: 三角函数
   
三角函数是数学中属于初等函数中的超越函数的一类函数。它们的本质是任意角的集合与一个比值的集合的变量之间的映射。通常的三角函数是在平面直角坐标系中
定义的,其定义域为整个实数域。另一种定义是在直角三角形中,但并不完全。现代数学把它们描述成无穷数列的极限和微分方程的解,将其定义扩展到复数系。
由于三角函数的周期性,它并不具有单值函数意义上的反函数。
三角函数在复数中有较为重要的应用。在物理学中,三角函数也是常用的工具。


基本初等内容

它有六种基本函数(初等基本表示):
函数名 正弦 余弦 正切 余切 正割余割
正弦函数 sinθ=y/r
余弦函数 cosθ=x/r
正切函数 tanθ=y/x
余切函数 cotθ=x/y
正割函数 secθ=r/x
余割函数 cscθ=r/y
以及两个不常用,已趋于被淘汰的函数:

正矢函数 versinθ =1-cosθ

余矢函数 vercosθ =1-sinθ

同角三角函数间的基本关系式:

·平方关系:

   sin^2(α)+cos^2(α)=1

   tan^2(α)+1=sec^2(α)

   cot^2(α)+1=csc^2(α)

·积的关系:

   sinα=tanα*cosα
cosα=cotα*sinα

   tanα=sinα*secα
cotα=cosα*cscα

   secα=tanα*cscα
cscα=secα*cotα

·倒数关系:

   tanα·cotα=1

   sinα·cscα=1

  
cosα·secα=1  

三角函数恒等变形公式:

·两角和与差的三角函数:

cos(α+β)=cosα·cosβ-sinα·sinβ

cos(α-β)=cosα·cosβ+sinα·sinβ

sin(α±β)=sinα·cosβ±cosα·sinβ

tan(α+β)=(tanα+tanβ)/(1-tanα·tanβ)

tan(α-β)=(tanα-tanβ)/(1+tanα·tanβ)

·辅助角公式:

Asinα+Bcosα=(A^2+B^2)^(1/2)sin(α+t),其中

sint=B/(A^2+B^2)^(1/2)

cost=A/(A^2+B^2)^(1/2)

·倍角公式:

sin(2α)=2sinα·cosα

cos(2α)=cos^2(α)-sin^2(α)=2cos^2(α)-1=1-2sin^2(α)

tan(2α)=2tanα/[1-tan^2(α)]

·三倍角公式:

sin3α=3sinα-4sin^3(α)

cos3α=4cos^3(α)-3cosα

·半角公式:

sin^2(α/2)=(1-cosα)/2

cos^2(α/2)=(1+cosα)/2

tan^2(α/2)=(1-cosα)/(1+cosα)

tan(α/2)=sinα/(1+cosα)=(1-cosα)/sinα

·万能公式:

sinα=2tan(α/2)/[1+tan^2(α/2)]

cosα=[1-tan^2(α/2)]/[1+tan^2(α/2)]

tanα=2tan(α/2)/[1-tan^2(α/2)]

·积化和差公式:

sinα·cosβ=(1/2)[sin(α+β)+sin(α-β)]

cosα·sinβ=(1/2)[sin(α+β)-sin(α-β)]

cosα·cosβ=(1/2)[cos(α+β)+cos(α-β)]

sinα·sinβ=-(1/2)[cos(α+β)-cos(α-β)]

·和差化积公式:

sinα+sinβ=2sin[(α+β)/2]cos[(α-β)/2]

sinα-sinβ=2cos[(α+β)/2]sin[(α-β)/2]

cosα+cosβ=2cos[(α+β)/2]cos[(α-β)/2]

cosα-cosβ=-2sin[(α+β)/2]sin[(α-β)/2]

·其他:

sinα+sin(α+2π/n)+sin(α+2π*2/n)+sin(α+2π*3/n)+……+sin[α+2π*(n-1)/n]=0


cosα+cos(α+2π/n)+cos(α+2π*2/n)+cos(α+2π*3/n)+……+cos[α+2π*(n-1)/n]=0
以及

sin^2(α)+sin^2(α-2π/3)+sin^2(α+2π/3)=3/2

tanAtanBtan(A+B)+tanA+tanB-tan(A+B)=0

部分高等内容:
·高等代数中三角函数的指数表示(由泰勒级数易得):

sinx=[e^(ix)-e^(-ix)]/2

cosx=[e^(ix)+e^(-ix)]/2

tanx=[e^(ix)-e^(-ix)]/[^(ix)+e^(-ix)]

泰勒展开有无穷级数,e^z=exp(z)=1+z/1!+z^2/2!+z^3/3!+z^4/4!+…+z^n/n!+…


此时三角函数定义域已推广至整个复数集。

·三角函数作为微分方程的解:

对于微分方程组 y=-y'';y=y'''',有通解Q,可证明

Q=Asinx+Bcosx,因此也可以从此出发定义三角函数。

补充:由相应的指数表示我们可以定义一种类似的函数——双曲函数,其拥有很多与三角函数的类似的性质,二者相映成趣。


·特殊三角函数值

a      30`   
45`   
60`   
90`

sina   1/2  
√2/2  
√3/2     1


cosa √3/2  
√2/2   
1/2   
0

tga
√3/3   
1     
√3   不存在

ctga √3      
1   
√3/3   
0




教程到此结束
QQ:147461195(FL基理大师)

TOP

33。[AS 功能代码教程02]数字魔方及数组概念[FL基础理论大师]
复制内容到剪贴板
代码:
数字魔方(经典数据结构实例):
1.本游戏的玩法,均在本FLASH中一一介绍了,博客中不再重复:
下载地址:
http://www.flashempire.com/myfe/upload/flash/142/1410014_1195878655.swf
2.编程序的基本原则就是这个游戏玩法的原则即:
1)第一行中间是1;

2)向右1格;向上1格;

3)上边出界,去下边;

4)右边出界,去左边;
5)
没数占着,就填数;

6)有数占着,坐屁股下。

3.下面是矩阵计算的程序:
var n:Number =
5;
//矩阵的行列数为n*n;

var matrix:Array = new
Array();
//因为AS中不能直接调用二维数组,所以我们先申请一个一维数组;


for (var i = 0;
i<n; i++) {

matrix[i] = new Array();

for (var j = 0; j<n; j++) {

  matrix[i][j] = i*n+j;

}

}
//上面这些代码的作用:把一维数组变为二维数组(算是一段功能代码);

for (var i =
0; i<n; i++) {

for (var j = 0; j<n; j++) {

  matrix[i][j] = 0;

}

}
//二维数组初始化,使matrix中的每个元素都为0;


var movei:Number = 0;

var movej:Number = int(n/2);

matrix[movei][movej] =
1;
//这里完成了总体原则的第一步[第一行中间是1];

var counter:Number =
2;
//计数器,准备放入下一个数2

for (i=0; i<n;
i++) {

for (j=0; j<n; j++) {

  tempi = movei--;

  tempj =
movej++;
  //总体原则第2步[向右1格;向上1格]


  if (movei<0) {

   movei =
n-1;
   //总体原则第3步[上边出界,去下边]


  }

  if (movej>n-1) {

   movej =
0;
   //总体原则第4步[右边出界,去左边]


  }

  if (matrix[movei][movej] == 0)
{

   matrix[movei][movej]
=
counter++;
   //总体原则第5步[没数占着,就填数]


  } else {

   movei =
tempi+1;

   movej =
tempj;

   matrix[movei][movej]
=
counter++;
   //总体原则第6步[有数占着,坐屁股下]


  }

}

}
//------------最后输出矩阵看看一看--------------


for (i=0; i<n; i++) {

trace(matrix[i]);

}




Flash充电1:在AS中数组的下标和C语言一样,都是从0开始的。
下面看一个实例:
var
myarray:Array=["CAT","DOG","PIG","BIRD","MONKEY"];


trace(myarray[3]);
//测试后显示BIRD



Flash充电2:在数据结构中还有两种概念,一个是堆栈,一个是队列。
在AS中这两个概念同样也是用数组来完成的。
堆栈(后进先出):
1.出栈:
pop():提取最后一个元素后,删除该元素
var
myarray:Array=["CAT","DOG","PIG","BIRD","MONKEY"];
trace(myarray.pop())
//显示MONKEY,后删除最后一个元素"MONKEY"
2.入栈:
push():在最后一个元素后,插入一个元素
var
myarray:Array=["CAT","DOG","PIG","BIRD","MONKEY"];
myarray.push("FISH")
trace(myarray)
//显示CAT,DOG,PIG,BIRD,MONKEY,FISH,在最后一个元素后面加一个"FISH"

队列(先进先出):
shift():提取第一个元素后,删除该元素
var
myarray:Array=["CAT","DOG","PIG","BIRD","MONKEY"];
trace(myarray.shift())
//显示CAT,并删除第一个元素"CAT"

Flash充电3:数组常用操作。
var
myarray:Array=["CAT","DOG","PIG","BIRD","MONKEY"];
trace(myarray.length)
//显示5,获取数组长度;
trace(myarray.join("+"));
//显示CAT+DOG+PIG+BIRD+MONKEY,把数组间用"+"连接,当然也可设为其它符号
trace(myarray.reverse());
//显示MONKEY,BIRD,PIG,DOG,CAT,数组倒排序

教程到此结束
QQ:147461195(FL基理大师)

TOP

34。[AS 功能代码教程01]通用延迟代码及FPS概念[FL基理大师原创]
复制内容到剪贴板
代码:
使用方法:
将下列代码写入fla的第一帧;在任意帧中写入delay();命令就可以实现3秒钟延时功效;


思路:
1.使用FPS和onEnterFrame配合完成.
2.Flash动画默认1秒钟播放12帧,即FPS为12。
3.执行一次onEnterFrame(进入帧),counter++自加1,那么一秒钟要加多少次呢?1秒钟要进入12次帧,所以自加了12次。那么2秒钟,3秒钟呢…于是我们得出公式
总延迟时间 = 延迟秒数 * FPS
原理就是用帧数做延时。
AS代码:
var fps:Number =
12;
//在Flash中默认的fps值为12,如果改动了默认fps值的话这里也要相应改动;
var delaytime:Number =
3;
//延时的秒数;

var counter:Number = 0;
//计数器的初值;

function delay() {

onEnterFrame =
function () {

  if (counter<delaytime*fps) {

   this.stop();


   counter++;


  } else {

   delete
this.onEnterFrame;

   counter =
0;

   this.play();


  }

};

}



注意:当该Flash帧动作中有onEnterFrame,要直接在onEnterFrame中输入代码:
var fps:Number = 12;

var delaytime:Number = 3;

var counter:Number = 0;
if (counter<delaytime*fps){

  counter++;

} else {

  counter =
0;

}



Flash充电: FPS概念

FPS(Frames Per Second):
即每秒播放帧的数量,Flash中默认值为12,就是说:默认Flash动画是1秒钟播放12帧。

教程到此结束
QQ:147461195(FL基理大师)

TOP

35。[Flash基础理论课04] 制作音乐播放器[Sound类]
复制内容到剪贴板
代码:
思路:声音的播放、停止、暂停的实现,非常简单。
步骤1:
首先放入三个按钮,实例名分别为
“start_btn”“pause_btn”“stop_btn”;
然后再导入一个声音文件到库中;

导入完成后,在库中右击这个声音文件—>链接—>勾选"为ActionScript

导出"和"在第一帧导出"这两项,在给"标识符"中输入一个名字,如"Cannon".

   
步骤2:
加入AS代码层:
var mysound:Sound = new Sound();
//让mysound具有Sound类的属性和方法


mysound.attachSound("Cannon");
//mysound链接到库中名为"Cannon"的声音元件


Start_Point =
0;
//设置播放的起点位置

play_btn.onRelease = function() {

mysound.start(Start_Point/1000);};
//播放按钮:从起点位置开始播放声音,因为要接收秒数,所以要除1000

pause_btn.onRelease = function() {

Start_Point = mysound.position;

mysound.stop();};
//暂停按钮:先保存当前播放到的位置为起点,然后停止播放

stop_btn.onRelease = function() {

Start_Point = 0;

mysound.stop();};
//停止按钮:将起点位置设为0,然后停止播放


Flash充电:Sound类常用属性和方法


(1)Sound.attachSound("idName"):声音对象依附声音元件

   
mysound.attachSound("Cannon")


(2)Sound.start(播放起点,循环次数):开始播放声音

   
mysound.start(5,3)

   
//从5秒钟位置开始播放,循环三次

   
mysound.start()

   
//从0秒钟位置开始播放,循环一次

(3)Sound.stop("idName"):停止播放声音

   
mysound.stop()

   
//停止全部声音

(4)Sound.setVolume(1~100):设定音量

   
mysound.setVolume(50)

   
//设置音量为50

(5)Sound.getVolume():取得音量设定值

   
mysound.setVolume(33)

   
trace(mysound.getVolume())

     //返回33


教程到此结束
QQ:147461195(FL基理大师)

TOP

36。[Flash基础理论课03]制作简易涂鸦板[画线指令]
复制内容到剪贴板
代码:
思路:1.设一个pressed变量,为布尔型,初始为false;
     
2.鼠标移动就画线;
     
3.当pressed=true 时,鼠标移动时,可以画线;
     
4.当pressed=false时,鼠标移动时,不能画线;

     
5.最后再加入一些按钮来调整线条粗细和清空画板.
步骤一:

   
放入三个按扭,实例名分别为:

    "clear_btn":
清除线条;

    "str_btn":
加粗线条;

    "thin_btn":
减细线条。
步骤二:
加入AS代码层:
var linesize
= 2;
//默认线条粗细为2

var pressed:Boolean =
false;
//pressed=true:开始画线;
pressed=false:停止画线


str_btn.onRelease =
function() {

if (linesize<5) {

  linesize++;
//笔触加粗,粗度不能大于5
}


};


thin_btn.onRelease
= function() {

if (linesize>1) {

  linesize--;
//笔触减细,细度不能小于1
}


};


clear_btn.onRelease
= function() {

_root.clear();
//实现清屏功能

};


this.onMouseDown = function () {

pressed =
true;
this.lineStyle(linesize,
0x000000, 100);

this.moveTo(_xmouse, _ymouse);

};

this.onMouseMove = function () {

if (pressed) {

  lineTo(_xmouse, _ymouse);

}

};

this.onMouseUp = function () {

pressed =
false;

};



FLASH充电1:AS画线,既可以在舞台上(_root),也可以在影片剪辑上(mc).

           
推荐画在mc中,这样可以方便、灵活地控制。

FLASH充电2: 关于 lineTo 及
moveTo
(1)先要设置线条用 lineStyle( 粗度 ,
颜色 , 透明度)
(2)画笔的起点 moveTo( X坐标 , Y坐标 )
(3)画笔的终点 lineTo( X坐标 , Y坐标 )
(4)注意:执行完 lineTo
这个指令后,下一次画线的起点就是当前lineTo的位置,就不用再单独做一次moveTo指令了。

下面我们在mc中绘制一个矩形
_root.createEmptyMovieClip("mc", 10);

mc._x = 30;

mc._y = 30;

mc.lineStyle(2, 0x0, 100);

mc.moveTo(0, 0);

mc.lineTo(100, 0);

mc.lineTo(100, 100);

mc.lineTo(0, 100);

mc.lineTo(0, 0);

FLASH充电3: 关于 curveTo ( 控制点X ,
控制点Y , X坐标 , Y坐标 )
下面我们在mc中绘制一条曲线:
_root.createEmptyMovieClip("mc", 10);

mc._x = 30;

mc._y = 30;

mc.lineStyle(2, 0x0, 100);

mc.moveTo(0, 0);

mc.curveTo(0, 200, 100, 200);


FLASH充电4: 颜色填充 beginFill(颜色号)
及 endFill()
注意:填充只能在封闭的线条内进行。
下面为矩形填个绿色:
_root.createEmptyMovieClip("mc", 10);

mc._x = 30;

mc._y = 30;

mc.beginFill(0x00FF00);

mc.lineStyle(2, 0x0, 100);

mc.moveTo(0, 0);

mc.lineTo(100, 0);

mc.lineTo(100, 100);

mc.lineTo(0, 100);

mc.lineTo(0, 0);

mc.endFill();

FLASH充电5: 线条清除
clear()
如:_root.clear() 或 mc.clear()


教程到此结束
QQ:147461195(FL基理大师)

TOP

37。[Flash基础理论课02]制作个性鼠标[updateAfterEvent]
复制内容到剪贴板
代码:
思路:1.隐藏原有鼠标指针;
     
2.鼠标的位置=mc的位置
步骤1:
   
绘制一个鼠标指针,保存为影片剪辑,实例名为"mymouse";

   
该指针也可为动画形式,且指针的中心点位于影片剪辑中心点的右下方;
   
做好后,放到舞台中。
步骤2:
加入AS代码层:
Mouse.hide();
//隐藏默认指针
_root.onMouseMove = function() {

mymouse._x = _xmouse;

mymouse._y = _ymouse;

updateAfterEvent()

};

FLASH充电:updateAfterEvent()
  使用 updateAfterEvent()
继续刷新舞台,使光标的移动看起来顺畅。


教程到此结束
QQ:147461195(FL基理大师)

TOP

38。[Flash基础理论课01]制作时钟[Date类]
复制内容到剪贴板
代码:
思路:首先获得系统时间,然后乘以相应的度数,实现钟表的功能。
步骤1:

   
绘制时针(hc),分针(mc),秒针(sc),其中hc,mc,sc是实例名。
步骤2:
加入AS代码:
_root.onEnterFrame
= function () {

var now:Date = new Date();

var hour = now.getHours();

var minute = now.getMinutes();

var second =
now.getSeconds();
//首先获得系统的时,分,秒


hc._rotation = hour*30;

mc._rotation = minute*6;

sc._rotation =
second*6;
//小时:一圈是360度,共12小时,每一小时30度


//分钟:一圈是360度,共60分钟,每一分钟6度

//秒钟:一圈是360度,共60秒钟,每一秒钟6度

};

Flash充电:常用的Date()类方法
(1)Date.getFullYear()//返回形式2007年份
(2)Date.getMonth()//返回形式1~12月份
(3)Date.getDate()//返回形式1~31日期
(4)Date.getDay()//返回形式1~7星期
(5)Date.getHours()//返回形式0~23

(6)Date.getMinutes()//返回形式1~59

(7)Date.getSeconds()//返回形式1~59


教程到此结束
QQ:147461195(FL基理大师)

TOP

39。[杂谈一] 什么是真正的Flash高手?
复制内容到剪贴板
代码:
很多人都叫比自己高的人为高手,凡是比自己强的都是高手,几乎所有的人大概都这么认为,那么什么才是真正的高手呢?

有谁真正的去想过?而这个问题比较笼统,也不是那么好说清楚的,我想世界上一流的闪客也不一定能完全说清楚和明白,因为它涵盖的范围比较广泛与繁多。那么鄙人就现在所知的一点心得写出来,畅聊大家,愿共行商讨。
我现在日益明白,所谓的高手必须具备以下几个素质。

1.技术。拥有精妙的as编程、美妙的美工处理、绝妙的动画制作、玄妙的特效镜头、与神妙的博大内涵文化等。
2.冷静。凡是都比较冷静的去对待,不娇不躁。

3.细心。古人曰:心细如发,才能达到无微不至的境界,做事方可游刃有余,如行云流水。

4.悟性。心思巧妙,善于思考,悟性极佳,一点即透,摸索东西也快。

5.好学。所谓学海无涯,在高手的领域中,永远觉得自己还是沧海中的一黍。

6.勤奋。真正做到了老子说的“上士闻道,勤而行之”的境界。

7.淡泊。不管神游于哪个专业论坛皆能心虚,而不自大、自夸、自满、自以为是,从不在别人面前班门弄斧、显示技巧。

8.热情。人一旦有空、有条件时一定会帮助初学者排忧解难,从不叫别人给他歌功送德,真正达到了“无条件”帮人的楷模境界。

9.低调。从不在论坛、群里骂别人是“垃圾”,也不会在别人的文章和作品前说他是弱智等,没有热嘲和冷讽,也不会装模做样的伴酷,恰恰显得平易近人。

10.境界。真正认识到了事物的本质和善恶美丑好坏的最高标准。而不会像那些拥有高超的技术、美工、编程的某某高手
们,做出的东西却是十分的“抽象派”、“黄色派”、“不知所云派”、“乱抹一气派”、“宣扬暴力***派”、“阴阳怪气派”、“感觉派”、“现代时尚
派”、“无聊派”等等作品出来。

这就是所谓的闪客界的“高手”,也是真正的高手,但一千个人中可能只能有那么一两个吧。

很多人看认为不可思议,觉得做不到,但正因为做不到你才会觉得难、觉得“高”,正因为“高”,才是一种领域,一种境界,一种高嘛。

这可以说是一种标准,很多人不是全部能达到与做到的,有的人能做到一点点,有的人能做到几点,有的人可能全部能做到,能全部做到的那就是真正的高手。

TOP

哈哈,谢谢版主,辛苦啦!!!
欢迎光临我的AS教学博客:
http://blog.sina.com.cn/yyy98

TOP

感谢alan98 的分享,遗憾的是没有把你的图片和SWF格式文档一起复制下来。如有差错请指出,希望给参考的人一个小的预揽

TOP

看自己需要好好练功了

TOP

楼主热心, 版主更热心!
感谢这些热心人让我们有学习的机会!
但得柔情消侠气,此生长愿伴妆台

TOP

看不懂

TOP

好,楼主乃真人也。
天生我才必有用。

TOP

看不懂耶

TOP

新春快乐!!!
欢迎光临我的AS教学博客:
http://blog.sina.com.cn/yyy98

TOP

看……不太懂

TOP

拿回去研究研究

TOP

精华!
没有你所不能,只有你所不想