Tag Archives: as3

译文-从基础开始深入Flash AS3教程七

17,一个文件中的多个类

一般来说,一个.as文件中就一个类,但是在AS3中,现在允许在一个文件中定义多个类用来辅助主类。

在.as文件中的辅助类,必须定义在类包以外,并且只针对此文件中的主类和其他辅助类可见。

例如:

package {
class MyClass {
function MyClass() {
var helper:MyHelper = new MyHelper();
}
}
}
class MyHelper {
function MyHelper() {
var helper:HelpersHelper = new HelpersHelper();
}
}
class HelpersHelper {
function HelpersHelper () {
}
}

译文-从基础开始深入Flash AS3教程六

14,SimpleButton实例

AS3现在有一个新的类:SimpleButton(flash.display.SimpleButton)。这个类允许你通过AS创建一个按钮。

var myButton:SimpleButton = new SimpleButton();
SimpleButton类有4个属性分别代表按钮的四个不同状态:upState,overState,downState和hitAreaState。你可以为每一个状态创建一个新的显示对象,然后将显示对象赋予SimpleButton的各种状态:

myButton.upState = mySprite1;
myButton.overState = mySprite2;
myButton.downState = mySprite3;
myButton.hitAreaState = mySprite4;

译文-从基础开始深入Flash AS3教程五

12,标签申明

在AS3中引入了标签,新的标签可以和循环体一起使用。例如,现在有两个嵌套的循环体,如果想要在内循环体中break掉外循环,一般使用下面的方法:

var i:Number;
var j:Number;
var exit:Boolean = false;
for (i=0; i<10; i++) {
for (j=0; j<10; j++) {
if (i > 3 && j > 3) {
exit = true;
break;
}
}
if (exit) {
break;
}
}

在引入了新的标签以后,可以使用下面的方法从内循环体中直接break掉外循环体:

var i:Number;
var j:Number;
mainLoop: for (i=0; i<10; i++) {
for (j=0; j<10; j++) {
if (i > 3 && j > 3) {
break mainLoop;
}
}
}

译文-从基础开始深入Flash AS3教程四

10,delete关键字和类成员

delete关键字在Flash中是用来删除定义的变量,但是并不将对象从内存中清除掉(这是垃圾收集器的工作)。它只是将一个变量的引用设置成无效,让内存中的这个对象无法再被引用和使用,也无法再使用for in来枚举。

事实上,垃圾处理器(GC)将在特定的时候,自动的从内存中删除那些不再被引用和使用的变量。比如,你创建了两个对象引用A和B,都指向了对对象ObjectX的引用,如果delete了A,并不会让垃圾收集器把ObjectX从内存中删除,因为B的引用还是指向了这个对象。如果将A和B都delete,则不再有对ObjectX的引用,ObjectX也将被垃圾收集器回收。例如:

var a:Object = new Object();
var b:Object = a; // b和a引用同一个new Object();
delete a;
trace(b); // 输出[object Object] – 在内存中还是存在
delete b;
// GC将回收object

译文-从基础开始深入Flash AS3教程三

类型转换和as操作符

AS允许在需要的时候,将对象的类型改成另外一种匹配的类型,这就是类型转换。AS2和AS3都支持通过像“type(object)”这样的方式进行类型转换。例如,现定义一个数据类型为Object,你可以通过使用类型名称的语法将这个数据转换成另外一种数据类型。如:

var obj:Object = getMyCustomObject();
vay customObj:MyClass = MyClass(obj);

AS3引入了一种新的操作符“as”来进行类型转换。as操作符代替了类型名称语法来改变对象的数据类型。如:

var obj:Object = getMyCustomObject();
vay customObj:MyClass = obj as MyClass;

译文-从基础开始深入Flash AS3教程二

4,新的变量类型

AS3中有许多新的数据类型。其中有些类型是以前没有出现的。AS3中的基本数据类型如下:

简单数据类型:

Boolean
int
null
Number
String
uint
undefined

复杂数据类型:

Object
Array
Date
Error
Function
RegExp
XML
XMLList

新的数据类型通过类来定义,例如: Matrix (flash.geom.Matrix)
Shape (flash.display.Shape)URLRequest (flash.net.URLRequest)
等等。

事件侦听2-ActionScript3菜鸟教程 (转)

文章版权归原作者所有
在上一节中我们介绍了侦听,要知道我们可能经常会用到侦听,所以我们会写很多个addEventListener,经常有些侦听我们用过一次后可以就不会再用了,那么为了节省资源,我们要将这些侦听删除掉,要侦除侦听这们用这样的方法:
instance.addEventListener(MouseEvent.CLICK,insClickHandler);//添加侦听
instance.removeEventListener(MouseEvent.CLICK,insClickHandler);//删除侦听
这里我们用removeEventListener就可以将侦听删除掉,我们在编程过程中,已经不用的侦听我们应该及时删除掉以节省资源.
现在我们来看一个小例子,这个例子的功能是有两个按钮,点击其中一个自己变成不可点击,另一个变成可点击状态.
package net.smilecn{
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
public class MainForm extends Sprite{
public function MainForm(){
_btn1.addEventListener(MouseEvent.CLICK,btnClickHandler);
}
private function btnClickHandler(event:MouseEvent):void{
trace(“你点击了:”,event.currentTarget.name);
_btn1.addEventListener(MouseEvent.CLICK,btnClickHandler);
_btn2.addEventListener(MouseEvent.CLICK,btnClickHandler);
event.currentTarget.removeEventListener(MouseEvent.CLICK,btnClickHandler);
}
}
}
在我们上一节讲到的FLA文件在场景里加两个按钮一个名叫_btn1,一个叫_btn2;发布我们会发现点一个按钮后这个按钮的侦听就会被删除,另一个被加上.
当然像按钮的帧听没必要删除,但关于时间之类的侦听,不用了就要删除了
使一个按钮禁用可能用不到删除侦听的方法,大家可以会想到2.0里面用到的enabled,但在3.0中enabled对SimpleButton没有作用,对Button有作用,如果要完成相同的功能,我们要用mouseEnabled
下一节我们再看类和类之前的消息传递.

事件侦听1-ActionScript3菜鸟教程(转)

本博客转贴和as3爱好者分享 文章版权归原作者所有
在as3.0中我们用的最多的可能就是“事件” ,我们会侦听各种事件。
当我们点击一个按钮时,在2.0中我们可能会用到这样的语句:
_btn.onPress = function(){};
当然后我们也可以用addEventListener来侦听一个点击事件。在3.0中我们一律用addEventListener这种加侦听的方式来完成。
_btn.addEventListener(MouseEvent.CLICK,btnClickHandler);
function btnClickHandler(event:MouseEvent):void{
//点击后代码
}
这是一个单击事件,基本上我们用到的系统里的所有类都会有事件,在帮助文档中我们可以找到,我们可以很方便的使用这些事件。
我们现在把上一节中我们用到的代码稍加一下变动:
package net.smilecn{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.utils.getDefinitionByName;
import flash.events.MouseEvent;
public class MainForm extends Sprite{
public function MainForm(){
for(var i=1;i<=2;i++){
var ClassReference:Class = getDefinitionByName(“Mc”+i) as Class;
var instance:MovieClip = new ClassReference();
instance.name = “mc” +i;
instance.addEventListener(MouseEvent.CLICK,insClickHandler);
addChild(instance);
}
}
private function insClickHandler(event:MouseEvent):void{
trace(“你点击了:”,event.currentTarget.name);
}
}
}
event.currentTarget是指当前侦听的对像,加个name属性就是这个对像的名字,这里MouseEvent就是鼠标事件;Sprite、MovieClip、SimpleButton、Button这一些都可以加鼠标事件侦,当然不止这一些(注:SimpleButton是元件按钮,Button是组件按钮)
MouseEvent.CLICK这个实际上是一个常量,代表着”click”这个字符串,从字面上我们就可以看出这个是单击的意思,通常这些事件其实都可以字面上看到意思,像MouseEvent.MOUSE_DOWN就是鼠标按下事件,值得一提的是3.0里面加上了双击事件,是MouseEvent.DOUBLE_CLICK,不过使用双击还要使doubleClickEnabled 为true才行。
我们不可能从别人那里知道一个类有多少种事件,所以帮助是最好的老师,我们学习AS3最好的教程其实就是帮助,所以要勤看帮助,这样才能进步更快。
下节继续讲解事件侦听。

创建一个实用Flash站点的十大技巧

根据Macromedia 顶级Flash设计者、开发者以及可用性专家的建议,我们收集整理了下面这个关于创建Flash站点的十大技巧。

这些技巧只是一个开始,我们将继续提供更多的研究,学习与技巧。

1.记住用户的目标

用户往往带着目的访问一个站点,每个链接,每次点击都要合乎他们的经验并且引导他们通向他们的目标。当传输你的页面时,应该让关键的导航链接首先装载——万一用户想转到网站其它的区域。模仿通常的用户图形界面往往可以增加可用性。

2. 记住网站的目的

网站设计应该反应商业或者客户的需求,有效的传播主要信息与促进品牌。然而网站的目标最好通过尊重用户的习惯来达到,所以站点结构必须满足用户的需要,快速的将用户引导至其目标而避免任何公司和区域行话。

3. 避免没有必要的介绍

虽然介绍的动画非常精彩,但是它们往往延误了用户访问他们正在寻找的信息。应该经常提供给用户一个忽略介绍的命令或者访问你的主页的选择,当他们第二次访问您的主页时,对所有的用户都应该忽略简介动画(使用客户端的javascript来完成这个功能),然后在目标页面提供返回到动画页面的选择。

4. 提供合乎逻辑的导航与交互

· 保证用户的导航: 显示用户访问过的上一个地址和他即将访问的下一个地址. 通过链接的不同颜色在用户访问后提醒他们访问过的页面.

· 提供用户一个轻松跳出他们正在访问的部分回到出发点的的链接.

· 明确说明每个链接的位置. 保证链接的结构和命名法的可视性,而不是隐藏它们直到用户触发了某个事件(比如鼠标移近).

· 确保按钮定义了足够好的反应区域.

· 利用Flash流的特性首先装载主要的导航元素.