幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7454|回复: 5

一切由hello world开始

[复制链接]

86

主题

250

帖子

390

积分

版主

Rank: 7Rank: 7Rank: 7

积分
390
发表于 2009-12-2 21:53:35 | 显示全部楼层 |阅读模式
Flash已经步入了新时代,Actionscript3已经与Flash 8以前用的Actionscript2有本质的不同,面向对象的,具有业界标准素质的编程语言。

看到某些人还不知道如何开始。那就来个简单的hello world吧。

以下先说明下,安装不用说了,安装Flash cs3后

1.新建一个Actionscript文件
输入代码
  1. package
  2. {
  3.     import flash.display.Sprite;
  4.    
  5.     public class HelloWorld extends Sprite
  6.     {
  7.         public function HelloWorld()
  8.         {
  9.             trace("Hello World Flash");
  10.         }
  11.     }
  12. }
复制代码
保存为HelloWorld.as

2,新建一个Flash(选Actionscript3的)之后保存为任意名字的fla格式,但是要跟HelloWorld.as保存在同一目录。

3.点舞台下方的属性面板,选择“文档类”输入框,里面写入HelloWorld

4.Ctrl+Enter组合键,就会编译fla格式的Flash文件和HelloWorld.as

此时新弹出一个空白的flash窗口和一个输出面板,面板写着“Hello World Flash”
回复

使用道具 举报

86

主题

250

帖子

390

积分

版主

Rank: 7Rank: 7Rank: 7

积分
390
 楼主| 发表于 2009-12-3 09:24:49 | 显示全部楼层
开始了第一步,接下来可以去下载flash的帮助文档。见“工具资源下载帖”
然后如果你看懂了很多关于AS3的基础知识。
就可以试试去adobe官网下载sample来看看。

http://www.adobe.com/devnet/flash/?view=samples


再进一步就可以找点专业人士写过的书籍来看,例如下面这本。


原书名为《Actionscript 3.0 Animation -making things move》,由webstudio翻译的书名:《Flash Actionscript 3.0 动画教程》,翻译的质量还行,没有光盘,代码要自己去网上下载,书也不给个下载地址,原英文书下载:http://www.riabook.cn/en_book/fo ... ing_things_move.htm
最下面有源文件的下载地址!其原作者Keith Peters 大家有应该听说过!写过《ActionScript 3.0 Cookbook中文版》这本书也有中文版的出版!
回复 支持 反对

使用道具 举报

86

主题

250

帖子

390

积分

版主

Rank: 7Rank: 7Rank: 7

积分
390
 楼主| 发表于 2009-12-4 10:36:30 | 显示全部楼层
给个华丽的Flash CS4版本,必须用Flash Player 10播放器开的hello world粒子效果加强版
http://dl.dropbox.com/u/2877500/HelloSpace.swf


  1. package {
  2.     import flash.display.*;
  3.     import flash.events.Event;
  4.     import flash.geom.*;
  5.     import flash.text.*;
  6.     import flash.utils.setInterval;
  7.    
  8.     [SWF(backgroundColor=0x000000)]
  9.     public class HelloWorld extends Sprite{
  10.         private static const SIZE:Number = 475;
  11.         private static const R:Number = 300;
  12.         private static const HR:Number = R / 2;
  13.         private var particles:Vector.<Number> = new Vector.<Number>();
  14.         private var letterPoints:Vector.<Number> = new Vector.<Number>();
  15.         private var colors:Vector.<uint> = new Vector.<uint>();
  16.       
  17.         private var canvasGlow:BitmapData;
  18.       
  19.         private var mtx:Matrix = new Matrix(0.25, 0, 0, 0.25);
  20.         public function HelloWorld()
  21.         {
  22.             stage.scaleMode = "noScale";
  23.             stage.align = "TL";
  24.             
  25.             var bmd:BitmapData = createBitmapData("HelloWorld");
  26.             initParticles(bmd);
  27.            
  28.             var canvas:BitmapData = new BitmapData(SIZE, SIZE, false, 0x000000);
  29.             addChild(new Bitmap(canvas));
  30.             
  31.             var uvts:Vector.<Number> = new Vector.<Number>();
  32.             var particles2:Vector.<Number> = new Vector.<Number>();
  33.             var mtx3d:Matrix3D = new Matrix3D();
  34.          
  35.             var proj:PerspectiveProjection = new PerspectiveProjection();
  36.             proj.fieldOfView = 90;
  37.             var projMat:Matrix3D = proj.toMatrix3D();
  38.            
  39.             canvasGlow = new BitmapData(SIZE / 4, SIZE / 4, false, 0x000000);
  40.             var bmp:Bitmap = new Bitmap(canvasGlow, PixelSnapping.NEVER, true);
  41.             bmp.scaleX = bmp.scaleY = 4;
  42.             bmp.smoothing = true;
  43.             bmp.blendMode = BlendMode.ADD;
  44.             addChild(bmp);
  45.            
  46.             var counter:int = 0;
  47.             var moveCounter:int = 0;
  48.             var xysRandom:Vector.<Number> = new Vector.<Number>();
  49.             var xys:Vector.<Number> = new Vector.<Number>(letterPoints.length);
  50.             var f:Boolean = false;
  51.       
  52.             addEventListener("enterFrame", function(event:Event):void{
  53.                
  54.                 mtx3d.identity();
  55.                 mtx3d.appendRotation(counter, Vector3D.Y_AXIS);
  56.                 mtx3d.appendRotation(15, Vector3D.X_AXIS);
  57.                 mtx3d.appendTranslation(0, 0, SIZE / 2);
  58.                 mtx3d.transformVectors(particles, particles2);
  59.       
  60.                 Utils3D.projectVectors(projMat, particles2, xysRandom, uvts);
  61.                
  62.                 for (var i:int = 0; i < xysRandom.length; i++){
  63.                     if (i < moveCounter * 2){
  64.                         xys[i] += (letterPoints[i] - xys[i]) * .13;
  65.                     } else {
  66.                         xys[i] += (xysRandom[i] - xys[i]) * .12;
  67.                     }
  68.                 }
  69.                
  70.                 moveCounter = (f ? moveCounter + 100 : 0);
  71.               
  72.                 canvas.lock();
  73.                 canvas.fillRect(canvas.rect, 0x000000);
  74.                 for (var i:int = 0; i < xys.length / 2; i++){
  75.                     canvas.setPixel32(xys[i * 2] + SIZE / 2, xys[i * 2 + 1] + SIZE / 2, colors[i]);
  76.                 }
  77.                 canvas.unlock();
  78.                
  79.                 canvasGlow.fillRect(canvasGlow.rect, 0x000000);
  80.                 canvasGlow.draw(canvas, mtx);
  81.                 counter++;
  82.             });
  83.             
  84.             setInterval(function():void{ f = !f; }, 4000);
  85.         }
  86.         private static function createBitmapData(letters:String):BitmapData{
  87.             var fmt:TextFormat = new TextFormat();
  88.             fmt.size = 50;
  89.             var tf:TextField = new TextField();
  90.             tf.defaultTextFormat = fmt;
  91.             tf.autoSize = "left";
  92.             tf.textColor = 0xffffff;
  93.             tf.text = letters;
  94.             var bmd:BitmapData = new BitmapData(tf.textWidth, tf.textHeight, false, 0x000000);
  95.             var mtx:Matrix = new Matrix();
  96.             bmd.draw(tf, mtx);
  97.             return bmd;
  98.         }
  99.         private function initParticles(bmd:BitmapData):void{
  100.             for (var yy:int = 0; yy < bmd.height; yy++){
  101.                 for (var xx:int = 0; xx < bmd.width; xx++){
  102.                     var c:uint = bmd.getPixel(xx, yy);
  103.                     if (c != 0){
  104.                         letterPoints.push(xx - 220, yy - 20);
  105.                         particles.push(R * Math.random() - HR, R * Math.random() - HR, R * Math.random() - HR);
  106.                         colors.push(c);
  107.                     }
  108.                 }
  109.             }
  110.         }
  111.     }
  112. }
复制代码
回复 支持 反对

使用道具 举报

86

主题

250

帖子

390

积分

版主

Rank: 7Rank: 7Rank: 7

积分
390
 楼主| 发表于 2009-12-13 11:56:00 | 显示全部楼层
羊书来了。《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/ ... ts%2B%282009%29.pdf

源码下载地址  http://www.friendsofed.com/downl ... 3_Image_Effects.zip

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

1

主题

6

帖子

55

积分

②入门

积分
55
发表于 2010-5-17 23:31:56 | 显示全部楼层
老大 我看不懂 能不能请你加我的QQ 解说下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

15

积分

②入门

积分
15
QQ
发表于 2010-12-12 20:39:42 | 显示全部楼层
非常感谢!LZ辛苦了还有貌似实例下载地址失效了,麻烦修复一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-16 23:11 , Processed in 0.023109 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表