Main

Action Script 3 教程 Archives

June 7, 2006

小谈ActionScript 3.0与AS 2.0,1.0的swf兼容性

众所周知,Flash Player 9中为了解决兼容性问题,内置了两个虚拟机。AVM1来对付AS1.0&2.0,AVM2用来专门处理AS3.0。(注: 本文中ActionScript 均简写成AS)
用AS3.0中的SWFLoader来装载swf, img非常方面爽快。于是黑羽就想到一个问题:
可不可以用SWFLoader来装载使用AS2.0的组件(或1.0)编译过的swf呢?
可不可以通过AS2.0来装载AS3.0的swf呢?如果可以,那么海量的Flex2组件会让大家爽死!
如果可以的话,那岂不是可以轻松重用以前编的2.0组件了吗?
如果真的可以,那么虚拟机到底怎么工作呢?AVM2与AVM1通信??ohmy.gif

经过黑羽的探索、试验、查询资料后,答案是折衷的,不是很爽。sad.gif 听俺慢慢道来:

Continue reading "小谈ActionScript 3.0与AS 2.0,1.0的swf兼容性" »

June 28, 2006

【黑羽】ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触!

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)

Flash Professional 9 ActionScript 3.0 Preview 版本今天发布了,意味着从此我们从此不仅仅只能使用Flex 2来使用AS3.0,更可以使用我们一直很熟悉的Flash IDE来进行AS3.0开发了。

与Flex 2不同,Flash 9 alpha(即上面的Flash Professional 9 ActionScript 3.0 Preview )允许我们创建基于时间轴的ActionScript 3.0的Fla文档,而不是基于State的MXML文档。 在Flash 9 alpha 里,我们和以前一样可以在舞台上直接手绘矢量图,创建元件,添加动画,等等。

Continue reading "【黑羽】ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触!" »

June 29, 2006

【黑羽】AS 3.0教程(2):AS3.0的类及绑定

hi,鸟笼山的朋友们,这次我们开始介绍AS3.0中的类如何和库中元件绑定,和特殊的Document Class设计。
总共4步:
1.建一个标准的AS3.0类 (暂命名为KingdaMC,多么伟大的名字啊,简称“有名”)
2.新建一个元件,并设置它的Linkage和上面的类绑定。
3.在时间轴上写代码,用AS3.0代码创建n份“有名”。
4.删掉时间轴上代码,使用Flash 9新特色Document Class在舞台上创造n份“有名”。just 体验一把。

(写起来才知道要讲的内容多啊,晕,打了两个小时,累了,本节专门只讲讲AS3.0的类吧,其余的慢慢再讲)
在创建AS3.0之前,请允许我先对AS3.0类的语法和继承设计表示敬意。与标准的完全兼容,更好更严格的封装特性,特别是命名空间(name space)的引入。从今天起从AS3.0起, 在OOP层面上,AS3.0已经和Java,C#平起平坐了,甚至在某些方面(比如name space)比java更有意思。

让俺对AS2.0老鸟说几句憋在心里的激动之语:tongue.gif
如果说AS2.0只是外表接近OOP标准语言,内在还是乱糟糟的AS1.0脚本语言,那么AS3.0不论是从OOP设计级别,还是从编译器级别(如,对弱引用—— week reference—— 的支持)来评估的都是标准、正宗、强大的语言。

从AS3.0起,我们ActionScript 开发者可以挺起胸口,俺们是真正的行业标准级程序员。

在我继续教程之前,我要唱首歌给大家听:
AS3的英明,绝对不是一句两句能说清!~~~~~~biggrin.gif

Continue reading "【黑羽】AS 3.0教程(2):AS3.0的类及绑定" »

July 4, 2006

AS3.0教程(外1):Flash 9 Alpha 调试须知

1.写KingdaMC.as的时候,使用f9的autoformat功能会报错。怎么回事?
2.引用这个as以后的fla也出现这样的警告。怎么回事?

Continue reading "AS3.0教程(外1):Flash 9 Alpha 调试须知" »

AS3.0教程(3):Document Class特色为我们带来了什么?

Document Class,中文直译为“文档类”。顾名思义,就是和文档绑在一起的类。
文档是啥?就是要和这个类绑在一起的Fla文件。

什么用处?
这个玩意儿根本目的就是想把AS代码和Flash设计完全剥离。
从此,Fla里面只管设计,逻辑代码全部由外部的类来包办。
对于设计者和新手,黑羽可以打个比方,就好比三步走:
1.把Fla里面所有代码集中到第一帧,
2.再把第一帧里的代码拷贝到外部的一个as文件里。
3.再按照AS3.0的形式,把这些代码放到这个类的构造函数里去。再根据这些个代码抽出一些类的属性和方法就OK了。
唔,这个比喻有很多小毛病。但比较直观,比较好理解,一步步来。
等你明白有哪些小毛病了,你已经不需要这个破比喻了。

Continue reading "AS3.0教程(3):Document Class特色为我们带来了什么?" »

July 11, 2006

AS3.0教程(4):爽快使用XML

为什么放弃AS2.0选择AS3.0?如果只允许我说三个理由。那么AS3.0对XML的近乎完美的支持绝对是其中一个。
简单说说AS3.0中对于XML支持的不同吧:
A.AS2.0对XML的支持勉勉强强,将就着可以用。而AS3.0中对XML的支持是全方位的,极其强大和灵活的。
B.AS2.0对XML的支持不是内建的(build-in),也并非基于ECMAScript for XML(E4X)标准。而AS3.0中对XML的支持符合E4X标准,它的设计有三个优点:
1. 简易。包括操作和可读性。你会发现AS3.0中对于XML的操作犹如对一个普通Object对象一样浅显易懂。语句非常浅白流畅。
2. 连续性。其各个功能的设计和AS3.0其余的部分思想一致,易于理解。
3. 熟悉。操作符和操作逻辑对我们来说都相当熟悉易用。
在AS2.0时代,为了解决这部分的问题

C.效率。
效率包括两方面,开发效率,和代码执行效率。开发效率的论述见上。AS3.0对于XML的执行效率远远高过没有内建XML支持的AS2.0。

Continue reading "AS3.0教程(4):爽快使用XML" »

July 26, 2006

AS3.0教程(5):强大的事件机制(上)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)
Event机制作为重头戏,在ActionScript 3.0中加强了很多。更加统一、易用、标准、灵活。
ActionScript 2.0中有众多的事件实现机制:

Continue reading "AS3.0教程(5):强大的事件机制(上)" »

July 29, 2006

【黑羽】AS3.0教程(6):强大的事件机制(2)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)
今天Google小查了一下,居然有1060个网站转载了俺的系列教程。还包括了Blueidea, flash8, 5dmedia等顶级Web设计大站。非常开心,动力十足,呵呵。
其实到目前为止,我的3.0开发学习笔记已经有3万字左右的东西了,但都是些纲要和代码,整理成文,尤其是用比较有条理和易懂的方式写出来会比较慢。况且开发中的代码是随手拈来,但写教程的代码往往要经过一些改写,使得重点更突出。所以如果更新有点慢,请耐心一些,呵呵。

如何接收事件?如何做到AS3.0的标准事件编程?
Event改变的部分很多,这两天有空时,黑羽就在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。
我准备这样来讲解:
先给个接受事件的代码例子。在例子中,指出:
(1) Event对象发生了什么变化
(2) addEventListener语法的不同,原因,和const型必要性和用法
(3) Listener和As2.0有何不同,和this关键字的“改进了的记忆力”

Continue reading "【黑羽】AS3.0教程(6):强大的事件机制(2)" »

【黑羽】AS3.0教程(7):强大的事件机制(3)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)

(2) addEventListener语法的不同,原因,和const型必要性和用法
本例如果是AS2.0,那么代码是这样写的:


outsideChild.addEventListener("click", inclassHandler)

本例是3.0,如果你trace一下其中的MouseEvent.CLICK,输出的也是字符串"click"。
看起来AddEventListener的方法和以前也没什么大的出入。和这世界上大多数相同的事物一下,表象的类似却掩盖着本质的巨大差异。

我们先从最小的差异讲起:

Continue reading "【黑羽】AS3.0教程(7):强大的事件机制(3)" »

August 3, 2006

【黑羽】AS3.0教程(8):强大的事件机制(4)

本节内容:
1.弱引用的使用原则
2.listener的不同和this关键字的指向。


继续上次的话题。在讲listener 和 this关键字之前,我们先来讲讲一个高级话题:
弱引用的使用原则。

Continue reading "【黑羽】AS3.0教程(8):强大的事件机制(4)" »

August 12, 2006

【黑羽】AS3.0教程(9):强大的事件机制(5)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)

有兄弟反映,似乎AS3的事件机制有些复杂。
在我看来,编程上 “复杂”这个词一般有两种定义:实现麻烦 ,或者内容众多。
AS3中的事件机制其实现并不麻烦,逻辑更加清楚简单,因此不是“实现麻烦”这一类。
那应该指的是“内容众多”这个意思。黑羽倒觉得"内容众多"往往是褒义词,意味着API丰富,控制范围和深度大。那么一旦得其要领,即思路通畅,记忆深刻,也就不会觉得“复杂”了。

我也会尽量写的简单通俗,照顾新手。但我又要同时考虑到AS2老手们的需求,不让他们打瞌睡。所以AS初学者 看到不懂的地方可以跳过,多用用Event后,有需要再回过头看看我教程的其它部分,一定会有收获。

拿今天要讲的事件发送来说,我预计写以下内容:
1. EventDispatcher和Event的简介
2. 回顾AS2.0事件发送
3. 继承EventDispatcher进行事件发送。
4. 合成EventDispatcher进行事件发送。
5. 实现IEventDispatcher接口来进行事件发送。 与设计模式中的装饰器模式相似。

那么新手看第一,第二,第三部分已经足够应付一般应用。AS2老手们要看看第四部分。 开发大型项目的AS开发者,则第五部分必看。

Continue reading "【黑羽】AS3.0教程(9):强大的事件机制(5)" »

August 28, 2006

【黑羽】AS3.0教程(10):强大的事件机制(6)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)
(2007-10-30update: 呵呵,更正了一个手误。最后一个代码例子中的最尾部的花括号应该放在第一个class的结尾后。这样下面的kingdaClass才是包外类。否则编译不会通过。sorry^^ 谢谢daozi的细心。)
事件机制写的太多了,我自己都有点烦了。
但没办法,sick.gif,太重要了。而且AS3做了这么多好的改进,值得我们去一一探寻,给我们日后的编程带来极大的便利。ActionScript 初学者,本节可以跳过不看。
ActionScript 2熟练工应当看看,有些价值。

今儿讲掉
4. 合成EventDispatcher进行事件发送。
5. 实现IEventDispatcher接口来进行事件发送。 与设计模式中的装饰器模式相似。
这样事件的发送和接受,就可以讲完了。

那么,事件部分就这样完了?没有!你晕,我也同晕。因为还有一个很重要的特性,Event flow机制还没讲。这就是我所说的事件冒泡机制。给我们编程带来了莫大的方便。

好,下面先讲:

Continue reading "【黑羽】AS3.0教程(10):强大的事件机制(6)" »

AS3.0教程(外2):用flash9试用版编译as3的问题

问题及表现:
我在d盘安装了flash9试用版,在论坛上复制了第一个as3,发现不能编译,请高手解答:
package learnAs3
{
import flash.display.Sprite;
public class HelloAs3 extends Sprite
{
public function HelloAs3(){
trace("Hello World!");
}
}
}
提示:
**Error** G:\flash9\1\learnAs3.as: Line 1: Syntax error.
package learnAS3

**Error** G:\flash9\1\learnAs3.as: Line 2: ActionScript 2.0 class scripts may only define class or interface constructs.
{

**Error** G:\flash9\1\learnAs3.as: Line 4: Attribute used outside class.
public class HelloAs3 extends Sprite

**Error** G:\flash9\1\learnAs3.as: Line 5: The class or interface 'flash.display.Sprite' could not be loaded.
{

**Error** G:\flash9\1\learnAs3.as: Line 10: ActionScript 2.0 class scripts may only define class or interface constructs.
}

**Error** G:\flash9\1\learnAs3.as: Line 1: Syntax error.
package learnAs3

**Error** G:\flash9\1\learnAs3.as: Line 4: Attribute used outside class.
public class HelloAs3 extends Sprite

**Error** G:\flash9\1\learnAs3.as: Line 5: The class or interface 'flash.display.Sprite' could not be loaded.
{

**Error** G:\flash9\1\learnAs3.as: Line 10: ActionScript 2.0 class scripts may only define class or interface constructs.
}

Total ActionScript Errors: 9 Reported Errors: 9


//
改为as2格式,可以编译:
class HelloAs3 {
public function HelloAs3() {
trace("Hello World!");
}
}

//
这是什么原因呢?
sick.gif
解答:

Continue reading "AS3.0教程(外2):用flash9试用版编译as3的问题" »

November 5, 2006

【黑羽】AS3.0教程(11): 视觉元件精要(1)

题外话:
不少兄弟问我,AS3教程咋不出了哩?其实看我博客的兄弟们应该都知道,黑羽目前的Flash RIA整体网站,接近竣工,11月即将推出。结尾工作实在太多,从十一到上周末,基本上放假都在加班。一些博客或者论坛上兄弟的问题都没有精力回复,抱歉了。

上次还在5d上看到版主鼓动大家给我打气,让我继续,真是非常不好意思。
这个周末偶得空闲,遂集中精力,将自己开发笔记整理了一篇放上来。项目发布后,更新会正常。
laughing.gif

彻底了解AS3视觉元件架构

DisplayObject,直译为视觉对象,意为可以被看到的对象。

视觉是Flash 成功的主要基石。当我赏析ActionScript 3 的所有视觉元件类型和其整体构架时,感到非常满意。可以看出,这次整体的架构设计是深思熟虑的结果。与其他语言,比如C#,相比有自己强烈的特色,是对Flash视觉行为贴身定做的结果。

ActionScript 3的架构乍一看很复杂,不包括UIComponent的子类,就有7到8个层,20多个莫名奇妙的类。头疼!但实际上,它的设计是非常的简洁优雅,远远比ActionScript 2一个MovieClip打天下强太多了。实际上,只要真正弄清了它的设计思路,就可以高屋建瓴,一览无余,会发现这个架构逻辑清晰,非常的易懂易记。所以,先抛开ActionScript 3 的帮助文件,我们一起来看看为什么要设计这样一个架构,搞出20多个怪胎出来。

Continue reading "【黑羽】AS3.0教程(11): 视觉元件精要(1)" »

February 12, 2007

【黑羽】AS3.0教程(12):享受异常处理机制的时候到了

呵呵,快过年了。
给兄弟姐妹们一个精心包装的春节“礼物”,祝大家伙猪年行大运,心想事成!

第一次写这么正规的文档,所有文章样式都调了哦,可以直接打印来看!(仿郭德纲:)不知道大家是喜欢呢,喜欢呢还是喜欢呢?

Continue reading "【黑羽】AS3.0教程(12):享受异常处理机制的时候到了" »

April 26, 2007

【黑羽】ActionScript 3 教程全集

昨晚整理了一下已发过的系列教程,包括外面网站漏转载的几个外篇。

最近很忙,五一有空时再写一些有趣的东东或教程给大家看。大家前段时间发信或者博客上留言的问题我都尽量解答了。不过信件越来越多,真的没有时间一一答复了。而且问的问题重复的也慢慢多了,因此整理了这么一个全集,方便大家查找。

(日后教程如有添加,本页会持续更新)


Continue reading "【黑羽】ActionScript 3 教程全集" »

August 4, 2007

FDT3安装、设置及使用视频教程

弄了一下午,搞出了这个东东。还没吃中饭呢,饿啊...
FDT3实在是很不错,能够大大节约我们ActionScript 3 Coder的开发时间,和提高效率。
做了一个安装和设置的视频教程,希望对大家有用。这只是个基础使用教程,还有很多好东东,大家自己去体验吧。(录制软件用的不熟,有些地方录的不太好,掉了一些帧。不过,该讲的都讲了。)
有博客的兄弟,帮忙做个镜像吧,thx。我这个服务器带宽不高、不能过多占用,速度又不快。
麻烦回帖告知镜像地址。
下载地址:(请右键点击下载)
FDT3安装、设置及使用视频教程
镜像1:(由赵洪日兄弟的博客提供)

推荐大家看赵洪日兄弟的这篇教程,教大家如何使用FDT和ant来编译 ^_^
观看地址:http://www.zhaohongri.cn/blog/read.php?4
再推荐一篇Magicianzrh的教程:
使用Flex Ant Task+FDT+Eclipse+Flex SDK完成编译和debug

August 10, 2007

AS3.0教程(外3):如何移除容器下所有子显示对象?

容器中的子显示对象分为两类:

  • 处于显示列表中的子显示对象。被numChildren所记录的。

  • 由容器graphics对象绘制出来的矢量图。这个矢量图不属于Shape类型,不在容器的显示列表中,不被numChildren所记录。而是做为容器的背景矢量图存在,始终处于最后面。

  • 因此,准确的说,如果要移除容器下所有子显示对象,就要分别移除这两类对象。


    Continue reading "AS3.0教程(外3):如何移除容器下所有子显示对象?" »

    September 4, 2007

    详解Flash Player Cache——仔细说说FP U3B3【2】

    接上一篇:仔细说说Flash Player Update 3 Beta 3(含截图和下载)【1】
    Flash Player Cache的概念不是flash player 9 update 3 beta 3才提出的,事实上在两三个月前就有过这方面的讨论了。这次Update 3将它和MovieStar一同宣传,可见它的重要性也不会低于MovieStar的冲击力。

    Continue reading "详解Flash Player Cache——仔细说说FP U3B3【2】" »

    September 11, 2007

    【黑羽】AS3教程(13):AS3中的数据存取方式效率比较

    今天又有一位朋友和我在MSN上聊起了AS3中存取数据效率的话题,突然想起以前曾在blueidea论坛上讨论过。这个话题还有蛮多人感兴趣,比较实用,让它在论坛上沉下去有些可惜。因此特地整理成帖,希望对大家有用。废话少说,看蕉:
    使用如下几种存取数据方式进行存取100万次运算,所花时间依次为(单位为毫秒,ms):

    Continue reading "【黑羽】AS3教程(13):AS3中的数据存取方式效率比较" »

    October 14, 2007

    [as hack技术]垃圾回收机强制执行

    哈哈,Moonspirite兄弟发的一篇好文,转载来跟大家分享。我稍稍做了一点调整。期待Moonspirite再出好文,呵呵。
    保留原文出处链接和原帖的讨论:[as hack技术]垃圾回收机强制执行
    原文如下:

    Continue reading "[as hack技术]垃圾回收机强制执行" »

    January 28, 2008

    一个奇怪的Flash CS3 Bug

    今早在开发中碰到一个怪异问题,浪费了一些时间debug,最后发现是Flash CS3 bug。

    Bug表现:stageHeight数值不正常,始终比正常值少100px。

    随便新建一个fla文档,在第一帧输入“trace(this.stage.stageHeight);”。发现stageHeight结果始终是比正常舞台高度少100像素,比如文档高度是400,那么trace出来的结果就是300。使用文档类也一样。

    放到同事电脑上编译,则stageHeight结果正确。不解,相对无言。最后发现,如果把Ctrl+Enter弹出的调试窗口中的“带宽设置”视图取消,则trace正常。无语之极。平时开发时,大部分人都不会开这个“带宽设置”窗口,所以不易发现此bug。而我以前开发AS1,AS2留下的习惯,喜欢打开“带宽设置”窗口,结果就碰上这个飘忽的问题,白白郁闷了一些时间。放在这里,希望碰到同样问题的人,能够搜索到这篇文。

    June 6, 2008

    AS3《天地志》创刊号火热出炉!霍哈哈

    ActionScript天地会的兄弟们自发组织弄了一个ActionScript技术电子杂志,纯粹自娱自乐,发给大家看看,共享乐趣!100%原创内容,哈哈!
    下载地址:《天地志》创刊号点击下载(2M)
    本期有幸邀请到了7yue兄为我们撰写压阵好文,反响很好。后面几期将继续延续这个模式,请各个业界牛牛给我们写专栏,呵呵。我们没有时间压力,一切自由。

    本期目录:
    解读 Actions Script 3.0...............................................P02
    Namespace在flash cs3和flex3下的差异.....................P13
    位图相关应用:像素点的处理...........................................P19
    使用JSFL操作png导出矢量的swf...................................P23
    AsWing专题: AsWing 入门教程...................................P24
    PK竞技场之-无责任PK...................................................P26
    舞动的菜单....................................................................P32
    神奇的生命....................................................................P33
    答疑解惑....................................................................P35

    September 16, 2008

    ActionScript 3 书评

    之前在北京出差时和《程序员》刘大编辑深聊过AS3相关话题,聊得投机,刘编说希望我对目前国内外AS3/Flex书籍写些书评。结果答应之后,一连两月都没能安排时间写出来,很不好意思。直到8月份项目间隙中才写完了AS3方面的书评,刊登在9月份《程序员》上。10月份将刊登Flex部分的书评。刊登的文章因为杂志篇幅稍作了修整,下面是原文(3050字)。

    Continue reading "ActionScript 3 书评" »

    文字广告:你是站长吗?注册阿里妈妈赚广告费

    最近发表

    归档

    全部
    Creative Commons License
    此 Blog 中的日记
    遵循以下授权:
    Creative Commons
    (创作共用) 授权
    .
    Google PageRank
    本站被Adobe官方MXNA新闻聚合器收录
    本站被蓝色理想BXNA收录
    \n"; for ($i = 0; $i < count($arr_xml['URL']); $i++) { if( isset($arr_xml['PostID'][$i]) && $arr_xml['PostID'][$i] > 0 ) continue; echo "
  • ".$arr_xml['BeforeText'][$i]." ".$arr_xml['Text'][$i]." ".$arr_xml['AfterText'][$i]."
  • \n"; } echo ""; } } function tla_updateLocalXML($url, $file, $time_out) { if($handle = fopen($file, "a")){ fwrite($handle, "\n"); fclose($handle); } if($xml = file_get_contents_tla($url, $time_out)) { $xml = substr($xml, strpos($xml,'(.*?)', '"'); $n = 0; while (isset($out[$n])) { $retarr[$out[$n][1]][] = str_replace($search_ar, $replace_ar,html_entity_decode(strip_tags($out[$n][0]))); $n++; } return $retarr; } tla_ads(); ?>