闪客帝国:教程 闪客帝国教程 zh-cn 叶子 Allan 闪客帝国 闪客帝国 <![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
<![CDATA[关于AS 1.0、AS 2.0和java]]>
关于ActionScript 1.0、ActionScript 2.0、java的区别与联系——基于一个实例的讨论

问题:创建两个位置大小颜色各不同的可拖拽的矩形。


方法一:method1.fla
//ActionScript 1.0

//Flash Player 6(含)以上

//ActionScript 1.0或ActionScript 2.0均可


createEmptyMovieClip ("rectangle1_mc", 1);
rectangle1_mc._x = 10;
rectangle1_mc._y = 10;
with (rectangle1_mc) {
beginFill (0xff0000, 100);
moveTo (0, 0);
lineTo (200, 0);
lineTo (200, 200);
lineTo (0, 200);
endFill ();
}
rectangle1_mc.onPress = startDrag;
rectangle1_mc.onRelease = rectangle1_mc.onReleaseOutside = stopDrag;
//
createEmptyMovieClip ("rectangle2_mc", 2);
rectangle2_mc._x = 50;
rectangle2_mc._y = 50;
with (rectangle2_mc) {
beginFill (0xffcc00, 100);
moveTo (0, 0);
lineTo (400, 0);
lineTo (400, 100);
lineTo (0, 100);
endFill ();
}
rectangle2_mc.onPress = startDrag;
rectangle2_mc.onRelease = rectangle2_mc.onReleaseOutside = stopDrag;

方法二:method2.fla
//ActionScript 2.0

//Flash Player 6(含)以上

//必须为ActionScript 2.0


var rect1:Rectangle = new Rectangle (this, 10, 10, 200, 200, 0xff0000, 1);
var rect2:Rectangle = new Rectangle (this, 50, 50, 400, 100, 0xffcc00, 2);
delete rect1;
delete rect2;
delete Rectangle;

此方法必须得有一个Rectangle.as与之同路径。Rectangle.as内容如下:


class Rectangle extends MovieClip {
private var rectangle_mc:MovieClip;
public function Rectangle (target:Movi...

完整阅读本文...]]> 2005-10-09 <![CDATA[用flash制作简单拼图游戏]]>

  做好的成品如下:大家可以用鼠标将上面的图像碎片拖到下面的方框内的合适位置,为方便大家找位,游戏给出了有一定透明度的原图作为参考。大家可以发现这个游戏还设计了一个“吸附”功能,能够让你将拼图片轻松地整齐排列,同时游戏还会自动判断拼图是否全部正确完成。



 





制作步骤:


第一步:图片的准备工作


既然是拼图,当然首先就要有图片了,我找到的是一幅320*240象素的jpg图片,通过Fireworks将其切割成12块(每块80*80px),然后分别保存成12个jpg小图片备用,名称最好有一定规律,比如我将他们分别命名为pic1~pic12,当然你也可以利用其他图象处理工具来实现这一步。


第二步:建立Flash文件


打开今天的主角――Flash,通过菜单Modify Document...或Ctrl+J打开Document Properties面板(由于盗匪使用的是Flash
MX,一些快捷键可能与Flash 5的有所不同,不过盗匪会尽量给出Flash 5中相应的快捷键的,这个在Flash 5中的快捷键是Ctrl+M),将画面大小改为400*600px,其他可以保持默认值。


第三...

完整阅读本文...]]> 2005-09-07 <![CDATA[flashmx2004 输出flash 8 影片]]> 影片,试过之后,可能是我用的flashmx2004 pro 7.2 的原因。怎么也不好用,后来发现这样就可以用了。



   1。复制C:\Documents and Settings\[UserID]\Local Settings\Application
Data\Macromedia\Flash MX 2004\en\Configuration\Publish Profiles 下的default.xml文档,在当前目录下粘贴,并改名为flash8.xml,如果你不原意修改
可从点这里下载:flash8.xml



   别忘了将它放在只定的文件目录下。



   2.用记事本打开此文档,在第二行找到标签<flash_profile>将其中的name后的内容变为flash8



   3.在第64行找到<version>标签将其中的7改为8



   4。保存些文件。



   5。重新启动flash.



   6.新建一个文档,在第一帧上粘上代码:

代码:


// create textfield
this.createTextField("txtField", this.getNextHighestDepth(), 10, 10, 300, 100);
txtField.html = true;
txtField.htmlText = "<font size='60'>Hello World!</font>";
txtField.textColor = 0x0055CC;
// set new antialias mode
txtField.antiAliasType = flash.text.TextRenderer.AntiAliasType.ADVANCED;
// create shadow filter
var dropShadow = new flash.filters.DropShadowFilter();
dropShadow.blurX = 5;
dropShadow.blurY = 5;
dropShadow.distance = 3;
dropShadow.angle = 35;
dropShadow.quality = 2;
dropShadow.alpha = 0.5;
// apply shadow filter
txtField.filters = [dropShadow];

  7。按下ctrl+shift+f12,找开发布设置




完整阅读本文...]]> 2005-09-07

本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-03-02 · 原址 http://www.flashempire.com/include/rss/rssTutor.php ← Flash 保存计划