- 浏览: 49640 次
- 性别:
- 来自: 上海
文章分类
我一直非常重视ActionScript 3.0的基础。也许是觉得自己的基础不够“过硬”的缘故吧,在看过了一些ActionScript的图书后,又回过头来看《Foundation ActionScript 3.0 for Flash and Flex》,从中得到不少收获,愿同各位AS3开发者朋友们分享。
以下仅仅是我的一些读书笔记和思考,欢迎各位评论;讨论中共同进步!
原数组:var array:Array = [John, Bill, Jackson, Blund, Frank]
-----------删除数组中的元素的方法--------
方法1:
delete array[1];
trace(array);
结果:
John, Jackson, Blund, Frank
方法2:
array.splice(1,1); //从下标为1的位置,删除1个元素
trace(array);
结果:同上
------------for循环---------------
循环1:
for(var element: String in object){
trace(object[element]);
}
循环2:
for each(var element: Object in object){
trace(element);
}
-----------多个参数的函数------------
function sum(...operands):Number{
var numOperands:uint = operands.length;
var total:Number = 0;
for(var i:unit = 0; i < numOperands; i++){
total += operands[i];
}
return total;
}
----------拷贝对象(真正的拷贝)--------------
var array1:Array = new Array("one", "two", "three");
var array2:Array = array1.slice();
---------关于构造函数------------
如果B继承A,即B为A的子类,A为父类。在写B的构造函数的时候务必在第一行加上super(...),否则B将默认调用A的无参数构造函数。
--------显示列表深度-----------
第一个加到舞台上的图形的Index为0,位于一切物体的最下边;Index的值越高表示物体在越前的位置上显示。
---------------------------------------------------
---------------------------------------------------
----------Blend Mode(混合)-----------------
这个名词用在Flash中,我还真不知道。后得知,在Flash CS4中的属性框中的“混合”中可以设定各种混合模式,不过被设定模式的组件必须是Movieclip才可以。
代码实例:
package {
import flash.display.Sprite;
import flash.display.BlendMode;
import flash.display.Graphics;
public class Blend extends Sprite{
private var rect1:Sprite;
private var rect2:Sprite;
private var rect3:Sprite;
public function Blend() {
rect1 = new Sprite();
rect2 = new Sprite();
rect3 = new Sprite();
var g1:Graphics = rect1.graphics;
g1.beginFill(0xff200a);
g1.drawRect(0,0,100,100);
var g2:Graphics = rect2.graphics;
g2.beginFill(0xf343ea);
g2.drawRect(50,20,100,100);
var g3:Graphics = rect3.graphics;
g3.beginFill(0xe2200a);
g3.drawRect(30,50,100,100);
addChild(rect1);
addChild(rect2);
addChild(rect3);
trace("rect1: "+getChildIndex(rect1));
trace("rect1: "+getChildIndex(rect2));
trace("rect1: "+getChildIndex(rect3));
rect2.blendMode = BlendMode.INVERT;
}
}
}
结果:以下就是所谓的Blend,即混合效果中的一个。
----------Fileter(滤镜)------------------------
实例代码:
package {
import flash.display.Sprite;
import flash.display.Graphics;
import flash.filters.*;
public class Blend extends Sprite{
private var rect1:Sprite;
private var rect2:Sprite;
private var rect3:Sprite;
public function Blend() {
rect1 = new Sprite();
rect2 = new Sprite();
rect3 = new Sprite();
var g1:Graphics = rect1.graphics;
g1.beginFill(0xaf89ee);
g1.drawRect(0,0,100,100);
var g2:Graphics = rect2.graphics;
g2.beginFill(0xaf89ee);
g2.drawRect(50,20,100,100);
addChild(rect1);
addChild(rect2);
trace("rect1: "+getChildIndex(rect1));
trace("rect1: "+getChildIndex(rect2));
var gfilter:GlowFilter = new GlowFilter(0x000000,1,8,8);
rect2.filters = [gfilter];
}
}
}
结果:使用的GlowFilter滤镜效果使得第二个方块发黑光。
删除滤镜:
filters = square.filters;
filters.pop();
square.filters = filters;
-----------Flash 高级滤镜--------------
1. ConvolutionFilter(浮雕滤镜)
2. DisplacementMapFilter(哈哈镜效果)
----------关于Stage------------------
1. 全屏的方法,发布HTML中设置“仅Flash,允许全屏”,并在代码中嵌入this.stage.displayState=StageDisplayState.FULL_SCREEN;
2. Stage的ScaleMode的选项。
3. Stage的StageAlighn的选项。
---------关于MotionBase, Motion, AnimatorFacotry类------------
这几个类我没见过,不过看过本书和研究后,发现可以通过这些类在代码中实现帧动画。
代码示例如下,其中的_ball是Flash舞台上的一个组件实例,arrX和arrY指定了_ball对象的运动路径(分别对应x和y)。数组中每一个(x,y)表示一帧中_ball在舞台上的位置。
代码示例1:
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
var mb:MotionBase = new Motion();
mb.duration=24;
mb.overrideTargetTransform();
var arrX:Array = new Array();
var arrY:Array = new Array();
for(var i:int = 0; i < 240; i++){
arrX.push(i);
}
for(var j:int = 0; j < 240; j++){
arrY.push(0);
}
mb.addPropertyArray("x",arrX);
mb.addPropertyArray("y",arrY);
var afb:AnimatorFactory=new AnimatorFactory(mb);
afb.addTarget(_ball);
其实还可以不用数组,如果是动画设计师已经在Flash中做好了的动画,可以通过以下方式获取其路径。
首先在时间轴选中要导出的一段帧,然后选择Flash CS4中菜单中的“命令”->"导出到XML"。最后你是通过加载外部xml也好,还是直接复制XML内容也好,直接用XML内容初始化Motion。效果是一样的。代码示例2用的是XML内容初始化Motion.
代码示例2:
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
var xml:XML = <Motion duration="46" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="24" x="24" y="25" scaleX="1" scaleY="1" rotation="0" elementType="graphic" symbolName="补间 5">
<dimensions>
<geom:Rectangle left="-24" top="-24" width="48" height="48"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.5" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" tweenSnap="true" tweenSync="true">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="7" tweenSnap="true" tweenSync="true" firstFrame="7" x="77.5" y="135">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="11" tweenSnap="true" tweenSync="true" firstFrame="11" x="192.6" y="181.55">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="14" tweenSync="true" firstFrame="14" x="78.95" y="215"/>
<Keyframe index="16" tweenSnap="true" tweenSync="true" firstFrame="16" x="23.950000000000003" y="247">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="23" tweenSync="true" firstFrame="23" x="49.95" y="58"/>
<Keyframe index="26" tweenSnap="true" tweenSync="true" firstFrame="26" x="109" y="23">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="33" tweenSync="true" firstFrame="33" x="247" y="-1"/>
<Keyframe index="35" tweenSnap="true" tweenSync="true" firstFrame="35" x="295.95" y="8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="41" tweenSnap="true" tweenSync="true" firstFrame="41" x="356.9" y="111">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="45" tweenSync="true" firstFrame="45" x="262.95" y="222"/>
</Motion>;
var mb:MotionBase = new Motion(xml);
mb.duration=24;
mb.overrideTargetTransform();
var afb:AnimatorFactory=new AnimatorFactory(mb);
afb.addTarget(_ball);
以下仅仅是我的一些读书笔记和思考,欢迎各位评论;讨论中共同进步!
原数组:var array:Array = [John, Bill, Jackson, Blund, Frank]
-----------删除数组中的元素的方法--------
方法1:
delete array[1];
trace(array);
结果:
John, Jackson, Blund, Frank
方法2:
array.splice(1,1); //从下标为1的位置,删除1个元素
trace(array);
结果:同上
------------for循环---------------
循环1:
for(var element: String in object){
trace(object[element]);
}
循环2:
for each(var element: Object in object){
trace(element);
}
-----------多个参数的函数------------
function sum(...operands):Number{
var numOperands:uint = operands.length;
var total:Number = 0;
for(var i:unit = 0; i < numOperands; i++){
total += operands[i];
}
return total;
}
----------拷贝对象(真正的拷贝)--------------
var array1:Array = new Array("one", "two", "three");
var array2:Array = array1.slice();
---------关于构造函数------------
如果B继承A,即B为A的子类,A为父类。在写B的构造函数的时候务必在第一行加上super(...),否则B将默认调用A的无参数构造函数。
--------显示列表深度-----------
第一个加到舞台上的图形的Index为0,位于一切物体的最下边;Index的值越高表示物体在越前的位置上显示。
---------------------------------------------------
---------------------------------------------------
----------Blend Mode(混合)-----------------
这个名词用在Flash中,我还真不知道。后得知,在Flash CS4中的属性框中的“混合”中可以设定各种混合模式,不过被设定模式的组件必须是Movieclip才可以。
代码实例:
package {
import flash.display.Sprite;
import flash.display.BlendMode;
import flash.display.Graphics;
public class Blend extends Sprite{
private var rect1:Sprite;
private var rect2:Sprite;
private var rect3:Sprite;
public function Blend() {
rect1 = new Sprite();
rect2 = new Sprite();
rect3 = new Sprite();
var g1:Graphics = rect1.graphics;
g1.beginFill(0xff200a);
g1.drawRect(0,0,100,100);
var g2:Graphics = rect2.graphics;
g2.beginFill(0xf343ea);
g2.drawRect(50,20,100,100);
var g3:Graphics = rect3.graphics;
g3.beginFill(0xe2200a);
g3.drawRect(30,50,100,100);
addChild(rect1);
addChild(rect2);
addChild(rect3);
trace("rect1: "+getChildIndex(rect1));
trace("rect1: "+getChildIndex(rect2));
trace("rect1: "+getChildIndex(rect3));
rect2.blendMode = BlendMode.INVERT;
}
}
}
结果:以下就是所谓的Blend,即混合效果中的一个。
----------Fileter(滤镜)------------------------
实例代码:
package {
import flash.display.Sprite;
import flash.display.Graphics;
import flash.filters.*;
public class Blend extends Sprite{
private var rect1:Sprite;
private var rect2:Sprite;
private var rect3:Sprite;
public function Blend() {
rect1 = new Sprite();
rect2 = new Sprite();
rect3 = new Sprite();
var g1:Graphics = rect1.graphics;
g1.beginFill(0xaf89ee);
g1.drawRect(0,0,100,100);
var g2:Graphics = rect2.graphics;
g2.beginFill(0xaf89ee);
g2.drawRect(50,20,100,100);
addChild(rect1);
addChild(rect2);
trace("rect1: "+getChildIndex(rect1));
trace("rect1: "+getChildIndex(rect2));
var gfilter:GlowFilter = new GlowFilter(0x000000,1,8,8);
rect2.filters = [gfilter];
}
}
}
结果:使用的GlowFilter滤镜效果使得第二个方块发黑光。
删除滤镜:
filters = square.filters;
filters.pop();
square.filters = filters;
-----------Flash 高级滤镜--------------
1. ConvolutionFilter(浮雕滤镜)
2. DisplacementMapFilter(哈哈镜效果)
----------关于Stage------------------
1. 全屏的方法,发布HTML中设置“仅Flash,允许全屏”,并在代码中嵌入this.stage.displayState=StageDisplayState.FULL_SCREEN;
2. Stage的ScaleMode的选项。
3. Stage的StageAlighn的选项。
---------关于MotionBase, Motion, AnimatorFacotry类------------
这几个类我没见过,不过看过本书和研究后,发现可以通过这些类在代码中实现帧动画。
代码示例如下,其中的_ball是Flash舞台上的一个组件实例,arrX和arrY指定了_ball对象的运动路径(分别对应x和y)。数组中每一个(x,y)表示一帧中_ball在舞台上的位置。
代码示例1:
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
var mb:MotionBase = new Motion();
mb.duration=24;
mb.overrideTargetTransform();
var arrX:Array = new Array();
var arrY:Array = new Array();
for(var i:int = 0; i < 240; i++){
arrX.push(i);
}
for(var j:int = 0; j < 240; j++){
arrY.push(0);
}
mb.addPropertyArray("x",arrX);
mb.addPropertyArray("y",arrY);
var afb:AnimatorFactory=new AnimatorFactory(mb);
afb.addTarget(_ball);
其实还可以不用数组,如果是动画设计师已经在Flash中做好了的动画,可以通过以下方式获取其路径。
首先在时间轴选中要导出的一段帧,然后选择Flash CS4中菜单中的“命令”->"导出到XML"。最后你是通过加载外部xml也好,还是直接复制XML内容也好,直接用XML内容初始化Motion。效果是一样的。代码示例2用的是XML内容初始化Motion.
代码示例2:
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
var xml:XML = <Motion duration="46" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="24" x="24" y="25" scaleX="1" scaleY="1" rotation="0" elementType="graphic" symbolName="补间 5">
<dimensions>
<geom:Rectangle left="-24" top="-24" width="48" height="48"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.5" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" tweenSnap="true" tweenSync="true">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="7" tweenSnap="true" tweenSync="true" firstFrame="7" x="77.5" y="135">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="11" tweenSnap="true" tweenSync="true" firstFrame="11" x="192.6" y="181.55">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="14" tweenSync="true" firstFrame="14" x="78.95" y="215"/>
<Keyframe index="16" tweenSnap="true" tweenSync="true" firstFrame="16" x="23.950000000000003" y="247">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="23" tweenSync="true" firstFrame="23" x="49.95" y="58"/>
<Keyframe index="26" tweenSnap="true" tweenSync="true" firstFrame="26" x="109" y="23">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="33" tweenSync="true" firstFrame="33" x="247" y="-1"/>
<Keyframe index="35" tweenSnap="true" tweenSync="true" firstFrame="35" x="295.95" y="8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="41" tweenSnap="true" tweenSync="true" firstFrame="41" x="356.9" y="111">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="45" tweenSync="true" firstFrame="45" x="262.95" y="222"/>
</Motion>;
var mb:MotionBase = new Motion(xml);
mb.duration=24;
mb.overrideTargetTransform();
var afb:AnimatorFactory=new AnimatorFactory(mb);
afb.addTarget(_ball);
发表评论
-
打开qq聊天面板
2012-07-18 00:40 0btn.addEventListener(MouseEvent ... -
帧播放完毕后 自动关闭 flash 播放器
2012-06-13 14:51 1008fscommand("quit", &qu ... -
as3 打开QQ聊天框
2012-04-10 03:03 923as3 打开QQ聊天框 作者:6dn 日期:2011-10- ... -
AS3动画效果公式,常用处理公式代码,基本运动公式,三角公式
2012-04-01 13:40 0as3种常见的弹性效果公式以及波形运动等as3动画效果公式代码 ... -
随机生成不同的数组
2012-03-29 15:14 836function RandomArray(n:int):Arr ... -
一些AS3中常用到的公式
2012-03-19 14:32 717基本三角函数的计算: 角的正弦值 = 对边 / 斜边 角的 ... -
图片循环滚动
2012-02-20 16:23 847//当第一张图片上移至看不到的位置时,删除该图片,并将该图片排 ... -
Flex代码格式化工具
2011-12-21 13:32 706Flex代码格式化工具 Flexformatter插件 安装与 ... -
字符串排序
2011-12-08 01:38 894var str1:String="很长很长的文本.. ... -
AS3: Dictionary Object
2011-11-24 19:48 1335// Arrays use numeric indexes: ... -
在AS3里..我们无法手动完全删除一个对象,,
2011-11-12 13:36 3347在AS3里..我们无法手动完全删除一个对象,, 以MovieC ... -
视 频
2011-11-09 21:16 664//创建一个 NetConnection 对象 002 var ... -
flashdevelop平台-搭建-配置
2011-11-09 20:43 636http://qilei.org/200810/flashde ... -
遍历 XML 结构
2011-11-09 20:23 612遍历 XML 结构 目录 [隐藏] 访问父节点和子节点 访 ... -
xml 格式
2011-11-07 22:50 637<?xml version="1.0" ... -
加载 xml 清除 空格什么的方法
2011-11-03 11:15 613var str2:String=str.replace(/\s ... -
AS3如何加载自身SWF
2011-11-01 13:26 772AS3如何加载自身SWF 分类: ActionScript3. ... -
加载很多图片
2011-10-24 00:41 577这几天做一个图片加载的程序,出现了点问题,主要是图片的 ... -
a.swf与加载的swf的通讯方法(as3.0)
2011-10-13 23:08 779a.swf加载b.swf, 在b.swf中使用a.swf的方法 ... -
MapDemo 人物移动(二)
2011-10-07 19:52 0上篇提到了人物的创建和人物行走的动画原理,这回我们看看人物的 ...
相关推荐
第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...
第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...
第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...
《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...
本篇将围绕“Flash课件ActionScript3.0”展开,详细讲解其中涉及到的基础概念、语法特性,以及如何通过实践来提升编程技能。 一、ActionScript3.0概述 ActionScript3.0(AS3.0)是Adobe Flex和Flash开发中的主要...
本项目——“三角也疯狂”,就是一个基于ActionScript3.0开发的射击小游戏,展示了ActionScript3.0在游戏开发中的应用。 1. **ActionScript3.0基础知识**: - AS3.0是ActionScript的重大升级,引入了强类型、面向...
本压缩包包括: 《ActionScript 3.0 语言和组件参考.chm 《Flex 3 RIA开发详解与精深实践》PDF及 配套代码 (1)《ActionScript 3.0 语言和组件参考》概述 ...第9章 桌面上的Web开发——AIR 第10章 Flex AIR开发实践
在这个项目中,开发者利用ActionScript3.0的强大功能,构建了一个经典的Flash小游戏——俄罗斯方块。让我们深入探讨一下这个项目中的关键知识点。 1. **ActionScript3.0基础**: ActionScript3.0是AS系列的最新...
《C语言典型应用系统之——聊天室(ActionScript 3.0实现)》 在IT领域,编程语言的运用千变万化,其中C语言以其高效、底层控制能力强等特点,被广泛应用于系统开发、嵌入式系统以及各种复杂计算任务。而...
《ActionScript3.0在Flash小游戏开发中的应用——点灯游戏》 ActionScript3.0是Adobe Flash Professional和Flash Builder等开发工具中的核心编程语言,它以其强大的性能和丰富的功能,广泛应用于创建交互式网页内容...
给设计师看的交互程序设计书Flash ActionScript 3.0溢彩编程,2010年6月于清华大学出版
《ActionScript3.0编程》是一本专注于介绍Adobe Flash平台上的编程语言——ActionScript3.0的中文教程。ActionScript3.0是Flash Professional、Flash Builder等开发工具的核心语言,用于创建互动式富媒体内容、游戏...
一本全面介绍Adobe RIA平台核心语言——ActionScript3.0的技术宝典 一本囊括300多项问题解决方案的实战手册 一本献给所有 Flex/Flash 应用开发人员的Cookbook 本书讨论了在Flash Player里执行的ActionScript 3.0语言...