一切由hello world开始
Flash已经步入了新时代,Actionscript3已经与Flash 8以前用的Actionscript2有本质的不同,面向对象的,具有业界标准素质的编程语言。看到某些人还不知道如何开始。那就来个简单的hello world吧。
以下先说明下,安装不用说了,安装Flash cs3后
1.新建一个Actionscript文件
输入代码
package
{
import flash.display.Sprite;
public class HelloWorld extends Sprite
{
public function HelloWorld()
{
trace("Hello World Flash");
}
}
}
保存为HelloWorld.as
2,新建一个Flash(选Actionscript3的)之后保存为任意名字的fla格式,但是要跟HelloWorld.as保存在同一目录。
3.点舞台下方的属性面板,选择“文档类”输入框,里面写入HelloWorld
4.Ctrl+Enter组合键,就会编译fla格式的Flash文件和HelloWorld.as
此时新弹出一个空白的flash窗口和一个输出面板,面板写着“Hello World Flash” 开始了第一步,接下来可以去下载flash的帮助文档。见“工具资源下载帖”
然后如果你看懂了很多关于AS3的基础知识。
就可以试试去adobe官网下载sample来看看。
http://www.adobe.com/devnet/flash/?view=samples
再进一步就可以找点专业人士写过的书籍来看,例如下面这本。
http://www.riabook.cn/upload/foundation_actionscript3_animation.jpg
原书名为《Actionscript 3.0 Animation -making things move》,由webstudio翻译的书名:《Flash Actionscript 3.0 动画教程》,翻译的质量还行,没有光盘,代码要自己去网上下载,书也不给个下载地址,原英文书下载:http://www.riabook.cn/en_book/foundation_actionscript_3_animation_making_things_move.htm
最下面有源文件的下载地址!其原作者Keith Peters 大家有应该听说过!写过《ActionScript 3.0 Cookbook中文版》这本书也有中文版的出版! 给个华丽的Flash CS4版本,必须用Flash Player 10播放器开的hello world粒子效果加强版
http://dl.dropbox.com/u/2877500/HelloSpace.swf
package {
import flash.display.*;
import flash.events.Event;
import flash.geom.*;
import flash.text.*;
import flash.utils.setInterval;
public class HelloWorld extends Sprite{
private static const SIZE:Number = 475;
private static const R:Number = 300;
private static const HR:Number = R / 2;
private var particles:Vector.<Number> = new Vector.<Number>();
private var letterPoints:Vector.<Number> = new Vector.<Number>();
private var colors:Vector.<uint> = new Vector.<uint>();
private var canvasGlow:BitmapData;
private var mtx:Matrix = new Matrix(0.25, 0, 0, 0.25);
public function HelloWorld()
{
stage.scaleMode = "noScale";
stage.align = "TL";
var bmd:BitmapData = createBitmapData("HelloWorld");
initParticles(bmd);
var canvas:BitmapData = new BitmapData(SIZE, SIZE, false, 0x000000);
addChild(new Bitmap(canvas));
var uvts:Vector.<Number> = new Vector.<Number>();
var particles2:Vector.<Number> = new Vector.<Number>();
var mtx3d:Matrix3D = new Matrix3D();
var proj:PerspectiveProjection = new PerspectiveProjection();
proj.fieldOfView = 90;
var projMat:Matrix3D = proj.toMatrix3D();
canvasGlow = new BitmapData(SIZE / 4, SIZE / 4, false, 0x000000);
var bmp:Bitmap = new Bitmap(canvasGlow, PixelSnapping.NEVER, true);
bmp.scaleX = bmp.scaleY = 4;
bmp.smoothing = true;
bmp.blendMode = BlendMode.ADD;
addChild(bmp);
var counter:int = 0;
var moveCounter:int = 0;
var xysRandom:Vector.<Number> = new Vector.<Number>();
var xys:Vector.<Number> = new Vector.<Number>(letterPoints.length);
var f:Boolean = false;
addEventListener("enterFrame", function(event:Event):void{
mtx3d.identity();
mtx3d.appendRotation(counter, Vector3D.Y_AXIS);
mtx3d.appendRotation(15, Vector3D.X_AXIS);
mtx3d.appendTranslation(0, 0, SIZE / 2);
mtx3d.transformVectors(particles, particles2);
Utils3D.projectVectors(projMat, particles2, xysRandom, uvts);
for (var i:int = 0; i < xysRandom.length; i++){
if (i < moveCounter * 2){
xys += (letterPoints - xys) * .13;
} else {
xys += (xysRandom - xys) * .12;
}
}
moveCounter = (f ? moveCounter + 100 : 0);
canvas.lock();
canvas.fillRect(canvas.rect, 0x000000);
for (var i:int = 0; i < xys.length / 2; i++){
canvas.setPixel32(xys + SIZE / 2, xys + SIZE / 2, colors);
}
canvas.unlock();
canvasGlow.fillRect(canvasGlow.rect, 0x000000);
canvasGlow.draw(canvas, mtx);
counter++;
});
setInterval(function():void{ f = !f; }, 4000);
}
private static function createBitmapData(letters:String):BitmapData{
var fmt:TextFormat = new TextFormat();
fmt.size = 50;
var tf:TextField = new TextField();
tf.defaultTextFormat = fmt;
tf.autoSize = "left";
tf.textColor = 0xffffff;
tf.text = letters;
var bmd:BitmapData = new BitmapData(tf.textWidth, tf.textHeight, false, 0x000000);
var mtx:Matrix = new Matrix();
bmd.draw(tf, mtx);
return bmd;
}
private function initParticles(bmd:BitmapData):void{
for (var yy:int = 0; yy < bmd.height; yy++){
for (var xx:int = 0; xx < bmd.width; xx++){
var c:uint = bmd.getPixel(xx, yy);
if (c != 0){
letterPoints.push(xx - 220, yy - 20);
particles.push(R * Math.random() - HR, R * Math.random() - HR, R * Math.random() - HR);
colors.push(c);
}
}
}
}
}
} 羊书来了。《making things move》看完后想继续深造的话,可以参考这本书。
通过此书你可以学会:
在运行时使用绘图API来创建向量线条和图形,以及如何在3D对象里绘图;
使用强大的BitmapData类处理图像,图像的每一个通道和每一点像素;
使用新的Pixel Bender技术来创建用于位图滤镜的ActionScript着色器、混合模式和填充模式;
在图像、文本和视频上应用动态的、可复用的效果,同时包括网络摄像头和麦克风的可视化;
结合开源的效果和动画类库,使得图像效果更加丰富多彩。
书籍大纲:
绘图API;
滤镜和混合模式;
位图与BitmapData类;
高级的位图处理;
Pixel Bender和着色器;
ActionScript的3D应用;
使用动画和效果类库;
强大的动画效果;
文本效果;
声音效果;
声音可视化;
交互效果;
-----------------------------------------------------------------------------
书籍下载地址http://download.csdn.net/source/1819236
http://dl.dropbox.com/u/2877500/FriendsofED%2B-%2BFoundation%2BActionScript%2B3%5B1%5D.0%2BImage%2BEffects%2B%282009%29.pdf
源码下载地址http://www.friendsofed.com/downloads/9781430218715/Fdn_AS3_Image_Effects.zip 老大 我看不懂 能不能请你加我的QQ 解说下 非常感谢!LZ辛苦了还有貌似实例下载地址失效了,麻烦修复一下
页:
[1]