闪客帝国:教程 闪客帝国教程 zh-cn 叶子 Allan 闪客帝国 闪客帝国 <![CDATA[PS随笔草地场景绘制]]> 教程原文:





(完)



完整阅读本文...]]>
2006-03-24
<![CDATA[Painter场景绘制]]> 教程原文:





(完)



完整阅读本文...]]>
2006-03-24
<![CDATA[ActionScript 3 相对于 ActionScript 2 新的特性和改动]]> 本文介绍了ActionScript 3 相对于 ActionScript 2
有哪些新的特性和改动。并在文章的最后一步步的教大家如何利用 Flex Builder 来编译并运行第一个 AS3 程序。



语法方面的增强和改动:





  • 引入了 package(包) 和 namespace(命名空间) 两个概念。其中 package
    用来管理类定义,防止命名冲突,而
    namespace 则用来控制程序属性方法的访问。


  • 新增内置类型 int (32比特整数),uint(非负32比特整数),用来提速整数运算;


  • 新增 * 类型标识,用来标识类型不确定的变量,通常在运行时变量类型无法确定时使用。在 AS2 中这种情况下需要用
    Object 赖作为类型表识;


  • 新增 is 和 as 两个运算符来进行类型检查。其中 is 代替 AS2 中的 instanceof
    来查询类实例的继承关系,而 as 则是用来进行不抛错误的类型转换。


  • 新增 in 运算符来查询某实例的属性或其prototype中是否存在指定名称的属性。


  • 新增 for each 语句来循环操作 Array 及 Object实例。


  • 新增 const 语句来声明常量。


  • 新增 Bound Method 概念。当一个对象的方法被付值给另外一个函数变量时,此函数变量指向的是一个 Bound
    Method,以保证对象方法的作用域仍然维持在声明此方法的对象上。这相当于 AS2 中的 mx.util.Delegate 类,在 AS3
    中这个功能完全内置在语言中,不需要额外写代码。


  • AS3 的方法声明中允许为参数指定默认值(实现可选参数)。


  • AS3 中方法如果声明返回值,则必须明确返回。


  • AS2 中表示方法没有返回值的 Void 标识,在 AS3 中变更为 void。




OOP方面的增强



通过类定义而生成的实例,在 AS3 中是属于 Sealed 类型,即其属性和方法无法在运行时修改。这部分属性在 AS2
中是通过类的
prototype 对象来存储,而在 AS3 中则通过被称为 Trait 的概念对象存储管理,无法通过程序控制。这种处理方式一方面减少了通过
prototype 继承链查找属性方法所耗费的时间(所有父类的实现方法和属性都会被直接复制到对应的子类的 Trait
中),另一方面也减少了内存占用量,因为不用动态的给每一个实例创建 hashtable 来存储变量。如果仍然希望使用 AS2
...

完整阅读本文...]]> 2006-03-03 <![CDATA[ActionScript扫盲]]>   随着AS3规范的推出,很多Flash Developer也越来越想了解AS3,我的这篇文章应该可以在各位仔细观看AS3规范之前对ActionScript有一个扫盲级的了解,虽然是扫盲级,但是也不是类似于“hello!World”类型的文章,看了你就知道了。

Action Script
Action Script简称为AS,是Flash产品平台的脚本解释语言。该语言可以实现Flash中内容与内容,内容与用户之间的交互。AS的解释工作由Action Virtual Machine(AVM)来解释,AVM可以称之为AS虚拟机,类似于JVM,AVM是Flash Player播放器中的一部分。AS语句要想起作用是要通过Flash创作工具或Flex服务器将其编译生成2进制代码格式方可,而编译过的2进制代码格式将成为SWF文件中的一部分,被Flash播放器执行。AS1.0起源于ECMAScript标准,由于ECMA的语法的兼容性和Flash Player播放器的大小和渲染引擎的需要,AS可以称之为是语法来源于ECMAScript。

  说到AS不得不说Flash4的AS集合,它曾经让Flash4兼容格式的内容变化多端。但是从一定程度上,Flash4的AS不能称之为成熟的并且为开发者所承认的脚本语言集合。它的语法方式完全不同于ECMAScript。虽然我们可以在Flash5的时代可以向它添加一些ECMA效仿的语句上去,但是AS在Flash4中是完全于ECMAScript标准相左的。现在Flash4的AS仍然可以被应用在Flash Lite1.1的内容之上。

  AS1.0是从Flash5的时代诞生的,这时的版本就已经具备了ECMAScript标准的语法格式和语义解释。尽管后来的Flash Player5/6的播放器版本(Build)的一再更新,使得越来越多的ECMA语法和语义被纳入到AS1.0的API当中去,但是核心语言的编译处理及表现方式都是延续了Flash5的AS1.0的标准。甚至于到后来的Flash7,对于AS1.0的核心解释机制,仍然与Flash Player5有着很多相同之处。

  AS2.0是在MX时代被慢慢引入的,而在MX 2004版本被开发者全面采纳。AS2.0的运行则是完全在Flash Player6以上的版本中才具备的机制。AS2.0在Flash6中都可以运行,是因为AS2.0语句在运行时(runtime)环境下仍然采用了AS1.0的模型。这也是骨子里为什么AS2.0的运行性能并不比AS1.0优秀的重要原因。AS2.0的编写方式则是更加成熟,引入了面向对象编程的方式,并且有良好的类型声明,而且分离了运行时和编译时的异常处理。AS2在格式上遵从了ECM...

完整阅读本文...]]> 2006-03-02 <![CDATA[ActionScript 3.0 语言规范发布]]>
点击查看

完整阅读本文...]]>
2006-03-02
<![CDATA[Flash Lite 2.0 新功能介绍]]>

以下是 Flash Lite 2.0 支持的新功能.
1,支持 ActionScript 2.0
该和Flash 4的AS语法(tellTarget)说再见了,现可用流行的点语法和OOP方法编程.

2,视频回放
Flash Lite 2 的视频回放是基于手机自身的视频渲染程序
就是说只要是手机支持的视频格式(3gp,mpg),就都可以在Flash中播放,这点比PC上更好.

3,解析外部XML
可使用Flash 7(MX2004)的XML对象,访问和解析外部XML文件.

4,本地数据访问
可以在手机上保存文件了,即使用本地共享对象(SharedObject)

5,载入外部图片和声音
从本地或网络上载入图片和声音文件(JPEG,MP3)

6,动态文本支持中文了(7yue 补充).

Flash Lite Player 2 启动要花掉 750k 到1M 系统内存
为了达到最佳性能表现,官方建议大家在运行FL2时,尽量少运行过多其他的应用程序.
像较早推出的一些Nokia智能手机,由于硬件配置低,已经和Flash Lite 2无缘了

按本文截至日期,目前支持 Flash Lite 2.0 的手机型号如下:
Nokia 3230
Nokia 6260
Nokia 6620
Nokia 6630
Nokia 6670
Nokia 6680
Nokia 6681
Nokia 6682
Nokia 7610
Nokia N70
Nokia N90

支持 Flash Lite 1.0 和 1.1 的设备如下:
http://www.macromedia.com/mobile/supported_devices/handsets.html

以下是 Flash Lite 2.0 还不支持的功能:

1,XMLSocket
2,Flash Media Server(Flash COM,FCS,FMS)通讯
3,远程共享对象 (Remote shared objects)
4,播放自己的视频格式(FLV)
5,AMF(Flash Remoting)
6,层叠样式表(CSS)
7,设备字体蒙罩
8,高质渲染圆滑的位图



完整阅读本文...]]>
2006-01-16
<![CDATA[Flash8与javascript集成]]>   本文部分内容来自emllab,在后部分,加入了本人的一个整合范例,中文译文转载请注明本站出处.


  在过去的一年里,对于开发人员来说使用flash与javascript通讯总会碰到一些麻烦的事情,从flash调用javascript函数已经没有什么问题了,因为我们可以使用getURL方法来直接调用,但是要想使用javascript返回flash在许多浏览器上几乎是不可能的。但是现在可以了。


Flash8的出现,这件事就变的比较容易了。J


  The ExternalInterface API

  

  之前我们使用flash调用javascript函数,一般使用这样的方法:


代码:


getURL(“javascript:alert(‘hello webstudio.com.cn’);”); 

  但是使用这种方法从flash调用javascript函数仍存在许多困难。特别是在处理多个javascript函数调用问题上。ExternalInterface
API可以与javascript实现无缝调用,并且它的能力达到可以在flash时间线使用。


  在我们正式进入它的使用方法之前,我们需要确保在flash时间上可用,就要导入它的类向这样:


代码:


import flash.external.*; 

  现在它已经允许我们做的第一件事就是可以调用javascript函数了。


  Call 调用方法


  call方法对于ExternalInterface对象来说是一个静态方法,也就是说我们不需要使用ExternalInterface对象的实例来调用方法,我们可以直接通过对象类来调用,向这样:


代码:


ExternalInterface.call(functionName:String,Parameters);  

这个方法有两个参数:

· functionName – 你想要调用的javascript函数名要以字符串的形式

· Parameters – 需要传递给javascript函数的参数,用逗号分开,是可选的。
...

完整阅读本文...]]> 2005-12-08 <![CDATA[用FLASH画矢量手机]]> 教程原文:





(完)



完整阅读本文...]]>
2005-11-23
<![CDATA[MovieClip的onLoad和onData bug以及变态修正方法]]> var pages = this.mc.createEmptyMovieClip("pages",0);
pages.onLoad = function(){
trace(this._width);
}
pages.onEnterFrame = function(){
trace(111);
}
pages.onData = function(){
trace(this._width);
}
trace(pages.onLoad);
trace(pages.onData);

输出后都是undefined

也就是说都没有被调用这个处理方法,但是用onClipEvent(data){}是可以trace的,也就是说问题已经解决了。

可是问题又来了,如果在类里我们怎么办呢,就只能用MovieClip.onData了。但是又不能调用,和jiagao讨论了一下,他也遇到了相同的问题。

想了一下,琢磨了一个简单的变态方法。方法如下 :


    var pages = this.mc.createEmptyMovieClip("pages",0);
pages._x = 2;
pages.onLoad = function(){
trace(this._width);
}
pages.onEnterFrame = function(){
if(this.onLoad!=undefined&&this.onData!=undefined){
trace(pages.onLoad);
trace(pages.onData);
delete this.onEnterFrame;
}
trace(111);
}
pages.onData = function(){
trace(this._width);
}

这样就没问题了,如果你不嫌麻烦的话就写一个extends MovieClip也可以。


(完)



完整阅读本文...]]>
2005-11-02
<![CDATA[用EventDispatcher自定义事件]]> 原来也研究过EventDispatcher,但是最近用的比较多,没想到这么好用,不用定义那么多全局变量。

我不做过多的说明,想要深入了解的同学请看帮助,我只告诉大家怎么定义自己的事件,而且大家马上就能用这些代码定义自己的事件。

下面看代码:


//首先我们要导入EventDispatcher
import mx.events.EventDispatcher;

class testEvent extends MovieClip{
function testEvent(){
//在构造函数中初始化
EventDispatcher.initialize(this);
}
//定义这三个方法
function dispatchEvent(){}
function addEventListener(){}
function removeEventListener(){}
function sendOK(){
//定义事件onSend
var eventObj1:Object = {target:this,type:"onSend"};
dispatchEvent(eventObj1);
trace("OK");
//定义事件onComplete
var eventObj2:Object = {target:this,type:"onComplete"};
dispatchEvent(eventObj2);
}
}

怎么用我们的事件呢?往下看!



新建一个FLA,输入以下代码:

大家还记得UI组建的事件处理函数么,对这个和UI组建的差不多,都是addEventListener和removoeEventListener。


var testObj:testEvent = new testEvent();
var eventObj1:Object = new Object();
eventObj1.onSend = function(obj){
trace("type:"+obj.type);
}
var eventObj2:Object = new Object();
eventObj2.onComplete = function(obj){
trace("type:"+obj.type);
}
testObj.addEventListener("onSend",eventObj1);
testObj.addEventListener("onComplete",eventObj2);
testObj.sendOK();

ok!去定义你的事件吧。



完整阅读本文...]]>
2005-10-14
本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-04-20 · 原址 http://www.flashempire.com/include/rss/rssTutor.php ← Flash 保存计划