google上找了些参考书和视频教程自学flash,对比基本参考书,发现还是veryCD上down的《Flash Action Script 3.0 动画教程》比较适合初学者。
创建flash动画有两种方式:
1.绑在时间线的帧上。先使用CS5.0创建fla文件,再时间轴上插入关键帧,在帧上点右键的动作里面添加AS脚本
2.纯脚本方式。使用CS5.0创建as脚本文件,编写纯脚本文件后,再创建fla文件,在fla文件的属性文档类中填写as脚本的文件名
看视频教程容易学习如何使用CS5.0环境制作图片,按钮等元件及制作补间动画,看书学习如何写as脚本及用户交互。
as脚本如何与元件结合?
在IDE环境下舞台上绘制完一个图片后将它转为元件,再选择 Export for ActionScript, 再输入一个类名标记这个图片,则在文档类或者时间线上就可以用代码new一个该类出来就能使用它了。
一个包只能有一个外部可访问的类,类名和as文件名相同。一个包可以包含多个包外类(在package关键字外部),类似于c语言中的静态变量和静态函数,包外类只供包内部访问。
在同一个目录下面的as脚本中的类可以互相调用,而不必显示的使用import导入类。
下面写了一个测试代码练手:包含三个脚本test.as, ParentBox.as, Ball.as
1 先创建三个ActionScript脚本文件
文档类:test.as
package { import flash.display.Sprite; import flash.events.MouseEvent; //import ParentBox; 文件在同一个目录下不用导入 //import Ball; public class test extends Sprite { private var parent1:ParentBox; private var parent2:ParentBox; private var bb:Ball; private var count:Number;
//构造函数 public function test():void { init(); } private function init():void {
//绘制矩形1 parent1 = new ParentBox(); addChild(parent1); parent1.x = 60; parent1.y = 60;
//绘制矩形2 parent2 = new ParentBox(); addChild(parent2); parent2.x = 200; parent2.y = 60;
//绘制圆,默认填充红色 bb = new Ball(0xFF0000); parent1.addChild(bb);
//增加鼠标事件侦听器,当在圆bb上点击鼠标时响应函数onBallClick bb.addEventListener(MouseEvent.CLICK, onBallClick); count = 0;//必须赋初始值 } public function onBallClick(event:MouseEvent):void { trace("count = " + count);
//矩形2中显示绿色圆和矩形1中显示蓝色圆 if (count % 2 == 0) { bb.setColor(0x00FF00); parent2.addChild(bb); } else { bb.setColor(0x0000FF); parent1.addChild(bb); } count++; } } }
ParentBox.as: 绘制一个矩形
package
{
import flash.display.Sprite;
public class ParentBox extends Sprite
{
public function ParentBox():void
{
init();
}
private function init():void
{
graphics.lineStyle(1,0);
graphics.drawRect(-50,-50,100,100);
}
}
}
Ball.as: 绘制一个圆
package
{
import flash.display.Sprite;
public class Ball extends Sprite
{
public function Ball(color:Number):void
{
init(color);
}
private function init(color:Number):void
{
graphics.beginFill(color);
graphics.drawCircle(0,0,40);
graphics.endFill();
}
public function setColor(color:Number):void
{
init(color)
}
}
}
2 再创建ActionScript动画文件001.fla
3 最后将test类作为001.fla的文档类
4 ctrl+Enter编译运行