让drawRoundRect抗锯齿的最简单的方法:

让x和y坐标为小数:

this.graphics.lineStyle(0,0,1);
this.graphics.drawRoundRect(10.5,10.5,100,100,20);

今天在FlashSeer的群里面讨论得出的结论,太经典了。平时让我们头痛的小数坐标现在居然能起到这个作用。这样也避免了位图的引入,提高了程序灵活性。

啥也不说了,去这里看视频:http://brajeshwar.com/2008/cc-to-actionscript-compiler/

一旦网络游戏开始基于ActionScript技术,Adobe的市场前景将不可限量。

资源:

一些测试类库:

http://labs.adobe.com/wiki/index.php/Alchemy:Libraries

Alchemy(炼金术)简介:

http://labs.adobe.com/technologies/alchemy/

相关下载:

http://labs.adobe.com/downloads/alchemy.html

相关论坛:

http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&catid=755&entercat=y

在这里可以看看Flash CS4的新特性。作者Lee的演讲非常清晰,即便英语不好,只要懂一点Flash知识也一定能看明白。

其中降到了一些非常有趣的新特性:

  1. 布局模式(为不同角色设计:Developer、Debugger、Designer)
  2. 3D动画效果
  3. 新的时间轴
  4. 强大的动画编辑器(包括一些预设的效果)
  5. 骨骼动画(甚至可以自动生成可拖拽骨骼效果的ActionScript代码)
  6. 新的Project(项目)面板:Adobe收购的gProject(Skinner大牛的作品)Flash CS4的开发和Flex Builder有的一拼了,例如新建ActionScript类等。
  7. Kuler面板
  8. 我就不废话了,视频演示如下:(Via)。

由于事件(Event)的特殊性,在继承(inheritance)中,往往容易被我们所误用。

一个简单的例子:

某类A继承自Sprite

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    public class A extends Sprite
    {
        function A(a:String = "t")
        {
            super();
            trace(a);
            this.addEventListener(Event.ADDED_TO_STAGE, init);
        }
        protected function init(e:Event):void
        {
            trace("A added!");
        }
    }
}

某类B,继承自A

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    public class B extends A
    {
        function B()
        {
            super(’x');
            trace("B");
            //this.addEventListener(Event.ADDED_TO_STAGE, init);
        }
        protected override function init(e:Event):void
        {
            super.init(e);
            trace("B added!");
        }
    }
}

文档类代码:

var b:B = new B();
addChild(b);

可以看到,最优雅的方式是:

  1. 在子类B中,如果继承自父类的函数已经添加了侦听器(这里是构造器),那么事件是会有响应的,不必再添加侦听器
  2. 如果子类B中没有init,那么将执行父类的init回调函数(callback Handler)
  3. 如果子类B中有init,那么有两种可能:一种是把A、B两个类的init全部写为private的,与上面一样,B的init不会被事件触发。不过,这种需求很少遇到
  4. 我们经常遇到的需求是,需要B执行回调函数,但有一些特定的功能。就如同我们常用的override一样,因此,我们把A、B的init都定为protected的;注意,B的init前面要加修饰符override
  5. 然后,在B的init里面,用super.init()调用父类的init函数,剩下的部分写入B需要的逻辑即可。

If there are any English readers, feel free to contact me via LinkedIn.

注意:本文可能存在更多解释,没有时间一一考证了。

今天,遇到一个棘手的错误:

TypeError: Error #1010: A term is undefined and has no properties.

这个错误令人有些无所适从,毕竟你根本不知道这个“term”究竟是哪个。

不过,一翻折腾后,我终于找到了元凶:原来,是在在引用一个已定义对象的未定义属性时,将这个属性再次作为对象来引用时出错。

有点绕口,不过看代码就明白了:

简单的例子我就不做变量类型声明了,直接写在AS3的MainTimeline上:

代码片段一:

var o = {};
o.a  = 5;
trace(o.a); // 没问题
trace(o.b); // 引用未定义对象,输出undefined

代码片段二:

var o = {};
o.a  = 5;
trace(o.a); // 没问题
trace(o.b.c); // 引用已定义对象(o)的未定义属性(b)作为对象的某一属性(c)

这时候不再简单地输出undefined,而是输出开头的错误。

有一些项目由于参与人数多,维护周期长,如果采用Flash Authoring Tool(即FlashIDE,也就是我们传统意义上的Flash制作工具)来编译SWF,会在项目后期造成极大的麻烦。缺点如下:

  1. FLA不是文本文件,无法参与版本管理
  2. FLA与Flash编辑工具的版本相关,兼容性不好
  3. Flash IDE不是免费的

因此,我们需要采用免费的mxmlc等其他编译工具。

一些经验如下:

  1. 失去了宝刀trace之后,mxmlc的调试起初会令人很不适应。这时候我建议用Firebug配合调试。在Flash中建立一个类,并设置静态方法,如下:
    internal class Debugger
    {
        import flash.external.ExternalInterface
        public static function echo(info:String):void
        {
            try{ExternalInterface.call("console.info",info);}catch(e:Error){}
        }
    }
    我这里是一个internal类,你也可以重新建立一个debug的package,看个人习惯了。
    目的就是通过ExternalInterface来将需要输出的参数输出给Firebug的console panel。最大的好处就是,避免了非DisplayObject无法跟踪文本编辑框的麻烦。我个人是非常推崇这种做法的
  2. Embed外部资源是摒弃Flash编辑环境后最重要的一个“标签”。由于不再有Flash方便的类绑定,因此要采用这种一开始我们不太习惯的绑定方式:
    [Embed(source="/www/projects/google/TEST/assets/TEST.png")]
    public static var cursorBitmap:Class;
    注意,路径一定要指向相应的文件,建议采用绝对路径以避免不同的package中相对路径不统一的麻烦
  3. 由于项目需要,我最近才开始接触mxmlc和Linux下的编译,欢迎诸位高手与我分享经验:)

代号为3551的警告也许是我最喜欢的一条警告了,它告诉我们,使用appendText方法可以大幅度提高效率。

原文:

Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.

我这里做了一个测试:

var allFonts:Array = Font.enumerateFonts(true);
var d = new Date().getTime();
for (var i:Number=0;i<allFonts.length;i++)
{
    var _f:Font = allFonts[i] as Font;
    //a.text+=_f.fontName;
    a.appendText(_f.fontName);
}
trace(new Date().getTime() - d);

更改将注释符号,得到的结果是,使用+=需要花费700多毫秒,而使用appendText方法,则把时间消耗控制在了100毫秒之内。

结合http://www.actionscriptversions.com的整理,转载请保留:http://as3blog.com/

Flash4时代:

逻辑控制:if-else

循环:for、while

Flash5时代:

点语法

函数

函数原型链

MovieClip事件

attachMovie动态添加MovieClip

JS风格逐渐形成

Flash6时代:

动态绘图API

更加统一的(JS风格)变量作用域

视频支持(Aw补充,应该是只嵌入AVI视频作预编译)

Flash7时代:

更加与JS一致的风格

增强视频支持(FLV)

Flash8时代:

位图

动态滤镜

On2 VP6视频

Flash9时代:

AS3诞生

二进制数据支持

Flash10时代:

Typed Array(进一步)

像素级滤镜

DisplayObject的3D API

增强的绘图API

底层文本API

Automattic的项目合作中,收到Raanan的推荐,来自这里的一份有趣提示。

  1. 抉择embed与object标签。object虽然是W3C的标准标签之一,但embed的兼容性更好;
  2. 最好能提基于供流式布局的SWF,技术方面可参考这篇文章(虽然是AS2的例子,但大体思想可见)。
  3. 提供autoplay参数。当这个参数为1或者true的时候,播放器可以自动播放。(目前我的VPlayer是支持的,与Automattic的合作项目也会考虑加上)
  4. 提供优雅的embed代码。技术上,可以将swf后面的参数通过rewrite的方式传入。我目前为Automattic制作的Player就采用了这种技术。与Youtube类似,我们甚至看不见flashvars这个属性:)

转自CNBETA
一、安装画廊
在网上下载后文件是Adobe Flash CS4 Install Americas.exe,点击选择解压,解压完成,安装开始,以下是截图;
Adobe Flash CS4 试用版详尽图文评测 [多截图]





开始菜单

桌面右键
Adobe Flash CS4 试用版详尽图文评测 [多截图]
二、功能
2.1 – 主界面
Adobe Flash CS4 试用版详尽图文评测 [多截图]
1、CS4的菜单栏进行了界面优化,你会发现更方便的使用;
2、快速更换布局,默认为Essentials,共分为6种布局,方便不同的用户群;
3、把常用工具和属性及图层库集合在一起,更能提升效率;
4、动画的关键帧放在最下方,你是否会发现在下方比上方好?
2.2 – 利用Flash Cs4 AIR 创建跨平台应用程序
细心的朋友,在上面看安装时的画廊就知道,组件里多了Adobe AIR,在“文件“里我们可以看到多了一项AIR Settings,有了发布AIR程序,当然我们可以轻松的创建AIR程序。
2.3 – 分享我的屏幕
大家还记得原来微软发布过Share桌面软件,这个功能跟微软的相似,点击“文件” –“Share my screen”,然后登录,如图。

登录完成后,自动启动Adobe Connectnow程序,把上面的地址发送给对方,也可利用Email进行发送;
Adobe Flash CS4 试用版详尽图文评测 [多截图]
多功能协作

2.5 – 崩溃的后果
这年代崩溃也不需要标题,直接意外事故更好,流行。

三、Adobe Media Encode Cs4
利用Media Encoder转换吧,记得原来需要单独下载,现在集成到一起来啦。

四、更多截图画廊
4.1 – Adobe Extension Manager
Adobe Flash CS4 试用版详尽图文评测 [多截图]
4.2 – Adobe Desktop

4.3 – Adobe Device Central CS4

4.4 –Adobe ExtendScript Toolkit CS4

4.5 – Adobe Drive CS4
Adobe Flash CS4 试用版详尽图文评测 [多截图]
结论
试用了Flash CS4过后,感觉变化最大就是优化了界面,不过遗憾的是Flash CS4测试版中的语言很乱,如 Adobe Extension Manager CS4和Adobe Drive CS4是中文的,Flash CS4 却是英文的,安装也是全中文,不过遗憾的是只能选择4种语言,里面并没有包含中文,一直在想。Adobe应该中文集成到默认语言,这样更多朋友会体验新产品。

Flash CS4最值得让我们选择他的几点好处:

1.CS4带来了最新的AIR程序创建,也许以后你创建安装程序你会选择AIR(自己原来就有这种想法,AIR的安装流程做得非常的漂亮);
2.优化后的界面看起来更漂亮,更适合多显示器使用,默认布局对屏幕大的用户提供了良好的视觉等;
当然更多功能还需大家亲自体验,更多新鲜功能尽在CS4中,一起期待吧。真想ZzZzZz/..
Flash Cs4测试版下载:QQ中转站   (提取码 57f33f01)
Flash Cs4破解文件:QQ中转站  (提取码 e88b49ef)