2008年10月16日 星期四

2007年2月集合

僅改2位元組,WinXP Home即刻變身WinXP Pro


一份名為《C'T》的德國電腦雜誌在一年前的一次報導,它已經成功實現把Windows XP Home的安裝檔變成WinXP Pro。真的不錯。

具體說明看這裏:

http://hk.knowledge.yahoo.com/question/?qid=7007011202727

不過,也有文章說“要小心”了:

http://download.enet.com.cn/blog/index.php?itemid=1519

2月25日

一虎一席谈:“伪科学”PK

我已經很長時間沒有看過鳳凰衛視了,想不到還有這樣的節目,強烈推薦,目前看到有兩次辯論.

第一次PK,分5段視頻:
http://v.blog.sina.com.cn/b/585710-1192346960.html

第一次PK,分4段視頻:
http://v.blog.sina.com.cn/b/585036-1192346960.html

強,約2個小時,我剛看完,方舟子\司馬南\何祚庥等皆登場,節目現場就差打起來了,有些年紀大的當場都吃高血壓的藥了,這比什麼大專辯論賽強多了.

我正在搜索,如果以後還有的話一定會再推薦給大家.真得非常強,不看可惜了.
2月22日

机顶盒的flash界面程序GUI

机顶盒的flash界面程序,这是即将爆发的一个应用方面,很有借鉴例,推荐观看。

http://www.6rooms.com/watch/18179.html

现在看起来,flash之对于视频应用还是刚刚起步,不要看youtube、56、tudou等现在还没有什么前途可言,但未来可能改变视频媒体的格局,目前互联网新闻和广告已经改变了平面媒体,虽也无法预料到“会发生什么”,但我们可以预料到“可能发生什么”。

加油,Flash!!!!!
2月12日

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(8)

第Ⅲ篇 Flash网络应用程序和FMS
在前面的两篇,我们介绍了如何使用JSP网页结合Flash开发网络应用程序,也介绍了如何使用Flash Remoting(各种RPC)与Flash有效的结合,可以说已经可以创建数据驱动的富媒体应用程序了。
但是,Flash技术还远不止这些,围绕着Flash Player,Macromedia为用户带来了更为丰富的体验,这就是Flash Media Server(简称FMS)。
Macromedia于2002年年末发布了令人惊异的Flash Communication Server MX服务器(简称FCS),这是FMS的前一个版本。使用FMS,你只需要配备Web摄像头和麦克风,并加上十几行ActionScript脚本便可以完成一个电视会议系统。
FMS给全世界的人带来一种全新的通讯方式。有了FMS服务器,您可以参加实时网络会议;使用FMS的功能在工作中进行协作以及通过Internet或企业Intranet共享信息。
还不只是这一点,Flash Player的强大功能使得实时通讯和应用程序的集成由梦想变为现实,这正是未来网络软件发展的趋势,这都是Flash Player惹的“火”。
本篇将介绍如何将Java和FMS结合起来以创建更为强大的Flash网络应用程序。
2月6日

Flash和PHP結合的方式總結(Flash和PHP通訊的方式)★☆★☆★☆★☆★☆★☆

《PHP for Flash網站開發手札》內包含了明確地介紹了Flash和PHP結合開發時要用到的各種技術,但是它比較太寬了,包含了web伺服器和PHP應用程式伺服器,下面我們在這裏做一個分隔出來的技術總結,怎樣在Flash和PHP應用程式伺服器之間通訊:

[1]使用MovieClip物件的getURL、loadVariables、loadVariablesNum方法可以使用HTTP或HTTPS協定以URL編碼格式向PHP應用程式伺服器傳遞和接收資料。

[2]使用LoadVars類的load、send和sendAndLoad方法可以使用 HTTP 或 HTTPS 協定以URL編碼格式向PHP應用程式伺服器傳遞和接收資料。

[3]使用XML類的XML.send、XML.load和XML.sendAndLoad方法可以以XML格式向PHP應用程式伺服器傳遞和接收資料,這還包括一些基於XML的變種形式,例如WDDX、SOAP等。
[4]使用XMLSocket類的XMLSocket.connect 和 XMLSocket.send方法可以創建和使用TCP/IP套接字連接從而以XML 格式向PHP應用程式伺服器傳遞和接收資料。

[5]使用Connection類或者NetConnection的call方法可以使用AMF協定向PHP應用程式伺服器傳遞和接收資料,這被稱為AMF-RPC的方式,還包括其他的變種形式,但都統稱為AMF-RPC方式。

現在馬上出發
作者邀您訪問他的BLOG: http://zhang-yafei.spaces.live.com(繁體)
作者邀您訪問他的BLOG: http://blog.csdn.net/zhang_yafei/(簡體)
2月3日

惊曝!从没有公布的液晶电视天生缺陷!(液晶电视很容易烧毁?)

今天看到一个文章,标题《惊曝!从没有公布的液晶电视天生缺陷!》,其介绍了液晶电视很容易烧毁的现象,真得触目惊心呀。
我很早以前只是觉得太费电,没有想到它会这么容易烧毁,幸亏还没买。
介绍给大家看一下:
2月2日

《Flash ActionScript X》勘误(1)

勘误1(chapter_11简体中文版)、

对于submit.htm文件,应该做如下修改(注意图中标红突出显示的部分):

textField" name="textPut" id="textPut">

感谢lzp710的来信。
勘误2(第188-190页,增加代码的注释)、
/**-------------------------------------------------------

*《Flash ActionScript X开发入门》勘误
* @勘误目的 代码补充注释
* @page 188--190
* @version Created on Dec 7, 2006
* @author zhang yafei
* @BLOG http://zhang-yafei.spaces.live.com/
-------------------------------------------------------**/
/**-------------------------------------------------------
*总体的思路是将Sound对象的属性与GUI模块关联起来
*我想无论是何种考虑,都无法躲过使用此方法来实现
*-------------------------------------------------------
*我利用了一系列变量和onEnterFrame事件配合来达到这个目的
*另外一些变量用来控制状态:前进、后退、拖动音轨滑块等
*-------------------------------------------------------
* newPosition Sound对象的播放位置,每次播放都检查这个变量
* advance 前进
* goBack 后退
* dragging 拖动音轨滑块
* playing 是否正处于播放状态
-------------------------------------------------------**/
//stop()是基于时间轴应用程序最常见的命令
//你随处都可以用它,并且不要吝啬
stop();
//首先声明和初始化变量
var newPosition:Number;
var advance:Boolean;
var goBack:Boolean;
var dragging:Boolean;
var playing:Boolean = true;
butt_play.enabled = false;
//创建Sound的一个实例,然后从库中加载并开始播放
var mySound:Sound = new Sound();
mySound.attachSound(varSound);
mySound.start(0, 1);
//声音播放完毕时,一切复原
mySound.onSoundComplete = function() {
mysound.stop();
newPosition = mySound.duration/1000;
playing = false;
butt_play.enabled = true;
};
//初始化变量和属性
//音轨属性,主要是用来控制滑块的拖放范围
//startDrag要用这些变量
var fade_track_top:Number = panel_open.fade_track._y;
var fade_track_bottom:Number = panel_open.fade_track._y;
var fade_track_left:Number = panel_open.fade_track._x;
var fade_track_range:Number = panel_open.fade_track._width-1;
var fade_track_right:Number = panel_open.fade_track._x+fade_track_range;
/**
*GUI按钮的控制事件,主要就是运算几个变量
*其中主要的就是注意newPosition变量
*因为这个变量代表的是当前播放的位置
*/
butt_play.onRelease = function() {
if (!playing && newPosition<mySound.duration) {
mySound.start(newPosition, 1);
playing = true;
}
butt_stop.enabled = true;
butt_pause.enabled = true;
butt_play.enabled = false;
};
butt_pause.onRelease = function() {
if (playing) {
newPosition = mySound.position/1000;
}
mySound.stop();
butt_pause.enabled = false;
butt_stop.enabled = true;
butt_play.enabled = true;
playing = false;
};
butt_rewind.onRelease = function() {
newPosition = 0;
mySound.stop();
playing = false;
panel_open.butt_fade._x = fade_track_left;
butt_play.onRelease();
butt_pause.enabled = true;
butt_stop.enabled = true;
butt_play.enabled = false;
};
butt_fastforward.onRelease = function() {
newPosition = 0;
mySound.stop();
playing = false;
butt_play.enabled = true;
panel_open.butt_fade._x = fade_track_right;
};
butt_stop.onRelease = function() {
newPosition = 0;
mySound.stop();
playing = false;
panel_open.butt_fade._x = fade_track_left;
butt_pause.enabled = false;
butt_stop.enabled = false;
butt_play.enabled = true;
};
butt_stepforward.onPress = function() {
advance = true;
};
butt_stepforward.onRelease = function() {
advance = false;
};
butt_stepforward.onReleaseOutside = function() {
advance = false;
};
butt_stepBack.onPress = function() {
goBack = true;
};
butt_stepBack.onRelease = function() {
goBack = false;
};
butt_stepBack.onReleaseOutside = function() {
goBack = false;
};
//__________________________________________________________
//利用onEnterFrame事件配合快进和快退按钮命令
//在其中,我们定义了一个变量playing用来显示是否正在播放
//从而根据mySound对象属性来和音轨对应
this.onEnterFrame = function() {
//注意这里是根据播放的方向来控制的
//根据不同播放方向来不断改变音轨滑块的位置
if (advance) {
if (mySound.position/1000+1<mySound.duration/1000) {
if (playing) {
newPosition = mySound.position/1000+1;
mySound.stop();
mySound.start(newPosition, 1);
} else if (butt_fade._x<fade_track_right) {
butt_fade._x++;
newPosition = ((panel_open.butt_fade._x/fade_track_range)*mySound.duration)/1000;
}
}
}
if (goBack) {
if (playing) {
newPosition = mySound.position/1000-1;
mySound.stop();
mySound.start(newPosition, 1);
} else if (panel_open.butt_fade._x>fade_track_left) {
panel_open.butt_fade._x--;
newPosition = ((panel_open.butt_fade._x/fade_track_range)*mySound.duration)/1000;
}
}
//拖放移动音轨滑块,两个事件
//开始拖动和停止拖动
panel_open.butt_fade.onPress = function() {
startDrag(panel_open.butt_fade, false, fade_track_left, fade_track_top-5, fade_track_right, fade_track_bottom-5);
dragging = true;
playing = false;
};
panel_open.butt_fade.onRelease = function() {
stopDrag();
mySound.stop();
dragging = false;
if (panel_open.butt_fade._x/fade_track_range == 1) {
playing = false;
panel_open.butt_fade._x = fade_track_right;
newPosition = mySound.duration/1000;
} else {
playing = true;
newPosition = (((panel_open.butt_fade._x-fade_track_left)/fade_track_range)*mySound.duration)/1000;
if (playing) {
mySound.start(newPosition, 1);
}
}
};
//音轨滑块自动移动情况
if (playing) {
panel_open.butt_fade._x = (mySound.position/mySound.duration)*fade_track_range+fade_track_left;
}
};
感谢instanceof的来信。
勘误3(第195-199页,增加代码的注释)、
/**-------------------------------------------------------
*《Flash ActionScript X开发入门》勘误
* @勘误目的 代码补充注释
* @page 195--199
* @version Created on Dec 7, 2006
* @author zhang yafei
* @BLOG http://zhang-yafei.spaces.live.com/
-------------------------------------------------------**/
/**-------------------------------------------------------
*@总体的思路
*我们使用外部的XML文件来作为MP3文件的数据库
*主要就是MP3文件的的名称和路径
*因此下面来构造一个XML对象来加载和解析XML文件
*目的就是获得MP3文件的的名称和路径
-------------------------------------------------------**/
//soundList是一个列表框组件,用来显示MP3文件
//首先清空组件,也就是一个初始化
//变量myOutSound用来定义是播放库中的声音
//还是播放外部的MP3文件
soundList.removeAll();
_parent._parent.myOutSound = true;
//下面构造一个XML对象来加载和解析XML文件
var xmlSound:XML = new XML();
xmlSound.load("soundlist.xml");
xmlSound.ignoreWhite = true;
function myOnLoad():Void {
var myVar:String = xmlSound.firstChild.nodeName;
var myVar2:String = xmlSound.firstChild.firstChild.attributes.path;
var myVar3:String = xmlSound.firstChild.firstChild.nodeName;
var myVar4:String = xmlSound.firstChild.firstChild.nextSibling.nodeName;
var myVar5:String = xmlSound.firstChild.firstChild.firstChild.nodeValue;
var soundNum:Array = new Array();
soundNum = xmlSound.firstChild.childNodes;
for (i=0; i<=soundNum.length; i++) {
if (soundNum[i].nodeName.substr(0, 5).toLowerCase() == "sound") {
//填充列表框组件
soundList.addItem(soundNum[i].firstChild.nodeValue+" in "+soundNum[i].attributes.path, soundNum[i].attributes.path);
}
}
soundInput = soundList.getItemAt(0).data;
trace(soundList.getItemAt(0).data);
}
xmlSound.onLoad = myOnLoad;
/**-------------------------------------------------------
*处理用户的选择事件**
*1、用户选择复选框,表明他将播放库中的声音元件
*2、用户取消选择复选框,并点击列表框,那么表明将播放外部的MP3文件
**
*我们创建两个监听对象以处理用户对复选框和列表框的选择事件
-------------------------------------------------------**/
var myListBox:Object = new Object();
var myCheckBox:Object = new Object();
//为监听对象定义事件函数
//事件函数中有一些向播放器传递消息和命令的代码
//主要就是播放器按钮的状态、播放状态
//变量myOutSound用来定义是播放库中的声音
//还是播放外部的MP3文件
myListBox.change = function(event_obj:Object) {
soundInput = event_obj.target.selectedItem.data;
trace(event_obj.target.selectedItem.data);
_parent._parent.playing = false;
_parent._parent.mySound.stop();
_parent._parent.butt_rewind.onRelease();
_parent._parent.myOutSound = true;
};
myCheckBox.click = function(event_obj:Object) {
if (event_obj.target.selected) {
soundList.enabled = false;
soundInput = "";
_parent._parent.mySound.stop();
_parent._parent.playing = false;
_parent._parent.myOutSound = false;
_parent._parent.myInSound = true;
_parent._parent.butt_rewind.onRelease();
}
if (!event_obj.target.selected) {
soundList.enabled = true;
_parent._parent.mySound.stop();
_parent._parent.playing = false;
_parent._parent.myOutSound = true;
_parent._parent.myInSound = false;
_parent._parent.butt_rewind.onRelease();
}
};
//将监听事件函数赋给监听对象
soundList.addEventListener("change", myListBox);
soundCheck.addEventListener("click", myCheckBox);
//stop()是基于时间轴应用程序最常见的命令
//你随处都可以用它,并且不要吝啬
stop();

感谢instanceof的来信。

Flash v.s. Flex

想看看老外怎么讲,但是却访问不了,谁能转贴一下:
2月1日

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(7)

21 AMF-RPC的开源实现OpenAMF

OpenAMF是一个开源的AMF-RPC实现,几乎可以替代Flash Remoting MX for Java。并且也有自己的一些特点,本章我们就来介绍一下怎样使用OpenAMF开发Flash网络应用程序。

21.2嗨!Flash Remoting MX for Java

现在,我们将创建一个最简单的使用OpenAMFFlash影片应用程序——一个类似传统的 Hello World程序。

webapps\3JK\WEB-INF\classes目录下将flashRemoting目录复制到webapps\3JK_with_OpenAMF\WEB-INF\classes目录下,实际上这些类都可以被用于OpenAMF

打开前面我们调用JavaBeansFlash影片应用程序,只需修改一下网关的地址就可以了。

找到下面的一行代码:

var myService:Service = new Service("http://localhost:8080/3JK/gateway", null, "flashRemoting.javaBeansTest.FlashJavaBeans", null, null);

修改为:

var myService:Service = new Service("http://localhost:8080/3JK_with_OpenAMF/gateway", null, "flashRemoting.javaBeansTest.FlashJavaBeans", null, null);

Ctrl+Enter键测试Flash影片应用程序,可以看到在“输出”面板中出现我们在JavaBeans中定义的信息。如图21.1所示:

21.1 “输出”面板中显示返回值

同样也可以调用其它的例子,但是要注意将支持的类(例如rowset.jar)复制到3JK_with_OpenAMF\WEB-INF\lib目录下。

技巧与提示

OpenAMF不支持将ServletJSP作为远程服务方法

2007年1月集合

lash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(6)

15 Flash网络应用程序中应用XML(一)——基础应用

XML(可扩展标记语言)正日益成为Internet应用程序中结构化数据存储和交换的标准。Flash也把其数据集成功能完全架构于XML之上,使用Flash创作环境,你可以非常轻松的创建Flash影片应用程序和服务器端的XML技术结合起来,而应用Flash Remoting MX for Java,你也可以把Flash Actionscript数据与使用复杂应用程序(如地址薄、聊天系统或者表单验证系统)的服务器集成起来,这些复杂的应用程序也一般都是使用XML技术建立起来的。

XML语法类似于HTML,都是使用标签来描述一段文本。HTML的标签是预定义的、固定的,我们只能使用,不能修改;XML则不同,它没有预先定义好的标签可以使用,而是依据设计上的需要,自行定义标签(例如你可以定义标签来标示一段数据的类型,就象下面的一行语句:VerySecret)。XML把信息的结构和显示的方式分开,这就允许相同的XML文档在不同的环境中使用和重用。

每个XML标签被称为节点(或称为元素),每个节点属于一种类型(1-XML节点,或者3-文本节点),而且节点都有属性。嵌入在一个节点中的节点称为该节点的子(或者子节点),由此构成一个树型层级结构,称为 XML DOM(文件对象模型),与JavaScript DOM非常相似(JavaScript DOM是网络浏览器中JavaScript元素的结构)

这一章我们首先介绍怎样在Java架构下创建、使用和处理XML文档的基本知识,然后介绍怎样使用Flash影片应用程序和Flash Remoting MX for Java应用XML文档。

要注意,本章并不对XML文档的概念作详细描述,如果你想了解XML文档的信息可以参考其它的文档和图书。另外,因为XML对象是标准的Actionscript对象,属于基本的Flash知识,并非Flash Remoting MX的组成部分,所以本书也不再对Flash Actionscript XML对象作过多地介绍。

15.1 JavaXML

XMLJava一个重要的组成部分,在Java应用程序的开发过程中,我们初步总结了一下,它主要扮演下面的几种角色:

1Web应用程序部署描述符(web.xml

2标签库描述文件(TLD

3企业Bean部署描述符(ejb-jar.xml

4使用转换为不同类型的客户端创建多种数据视图

5用于SOAP和开发Web服务

6基于XMLB2B交换所用的DTD(文档类型定义)

15.4Flash影片应用程序中使用XML

要在Flash影片应用程序中使用XML时,你可以使用下面的模式之一来处理XML数据:

1使用Flash影片应用程序可以直接调用XML文档并处理数据,这是Flash最早的功能之一;

2Flash影片应用程序中不使用XML格式数据。Flash影片应用程序使用简单数据类型向服务器发送数据,如果需要的时候也可以使用XML对象。服务端方法可以产生并处理XML数据,这些函数可以将XML数据转化为简单数据类型,并传回Flash影片应用程序。

3Flash影片应用程序中直接使用XML格式数据。服务端方法从Flash影片应用程序中获取XML,并将XML作为一个对象返回到Flash影片应用程序中。在Flash影片应用程序中使用ActionScript内建的XML对象和方法可以产生并处理XML

针对这几种模式,也有不同的使用方法,下面,我们就来分别加以介绍它们的使用方法。

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(5)

09 Flash影片应用程序中处理结果和结果集对象

要连接到Java应用程序服务器上的Flash Remoting MX服务并且调用远程服务方法,就必须使用mx.remotingmx.rpc这两个ActionScript类库:这两个类库包含了所有的Flash Remoting MX for ActionScript 2.0类和方法实现。

其中,mx.remoting是一个十分核心的ActionScript类库,它包含了用来与应用程序服务器建立连接的所有对象及方法,而mx.rpc可以用来调用远程方法并处理结果。

在前面的章节中,我们介绍了如何通过Flash Remoting MX网关服务JSP网页和Servlet中向Flash影片应用程序传递数据,也介绍了如何使用Flash影片应用程序向JSP网页和Servlet传递参数,并且介绍了如何使用Flash Remoting MX for JavaJDBC结合调用数据库,而且创建了几个简单的例子。

但是,当从JSP网页和ServletFlash影片应用程序传递的数据被接收到时,如何处理接收到的结果呢?我们在前面的例子中已经使用了一些方法,这只是在Flash影片应用程序中处理结果丰富方法中最简单的,Flash Remoting MX for ActionScript 2.0组件内置了丰富的ActionScript脚本语法用来处理结果。

本章就来详细地介绍一下这些ActionScript脚本语法。



9.4使用DataGlue类处理记录集数据

要在一个Flash UI组件中显示RecordSet记录集,一般可以使用该组件内建的setDataProvider()方法或者dataProvider属性,但是如果想在一个Flash UI组件中显示记录集中某一字段下的所有记录,就比较困难了。

例如,在前面的例子中,我们要在一个下拉列表框组件中显示记录集中酒店名,就必须首先创建一个新的单字段记录集,将原记录集中该字段的数据填充新的单字段记录集,然后再使用组件的setDataProvider()方法或者dataProvider属性,显然,这比较麻烦,而且占用的资源也比较多。

为了解决这个问题,Flash Remoting MX还内建了名为DataGlueActionScript类。使用DataGlue ActionScript类文件也可以在一个Flash UI组件中显示RecordSet记录集。DataGlue ActionScript类文件随同Flash Remoting MX组件一起被安装,要使用它,必须导入相应的类库,可以使用下面的一行脚本:

import mx.remoting.DataGlue;

DataGlue类有两个内建的方法:DataGlue.bindFormatStrings()DataGlue.bindFormatFunction(),使用这两个方法都可以在Flash UI组件(例如组合框和列表框)中显示记录集。

9.4.1使用DataGlue.bindFormatStrings方法绑定记录集

可以使用DataGlue.bindFormatStrings()方法在一个Flash UI组件(例如组合框和列表框)中显示RecordSet。下面的一段ActionScript脚本代码将结果RecordSet绑定到名为displayNames的列表框UI组件:

DataGlue.bindFormatStrings(displayNames, result, "#ContactName#", "#customerID#");

在这一段代码中,后两个参数被传递给函数(#ContactName##customerID#是记录集的字段名)。当用户选择组件中一个特殊的纪录时,ContactName列被显示在UI组件中,而customerID列被返回。下面,我们来改造一下前面的例子,看一下如何使用DataGlue类。

1打开前面一章我们创建的Restaurant_component.fla文档,将文档另存为Restaurant_component_DataGlue.fla

2保持当前位于主时间轴编辑状态,修改主时间轴上的脚本代码。在”动作”面板上追加下面的一行脚本代码:

import mx.remoting.DataGlue;

3在舞台上双击影片剪辑元件实例main_mc,使影片剪辑元件main处于编辑状态,选中层Script。保持该层被选中,在“动作”面板上修改其中的脚本代码:

将下面的一段脚本代码:

var newRecordSet:RecordSet = new RecordSet(["hotelName"]);

for (var i = 0; i

newRecordSet.addItemAt(i, {hotelName:resultRecordSet.getItemAt(i).hotel_name});

}

if (newRecordSet.isLocal()) {

newRecordSet.addItemAt(0, {hotelName:"请选择一个酒家或酒店"});

hotelName_cb.dataProvider = newRecordSet;

}

替换为

DataGlue.bindFormatStrings(hotelName_cb, resultRecordSet, "#hotel_name#", "#hotel_name#");

可以看到,前面多行代码实现的功能,现在只需一行就可以实现了。

4因为现在是使用DataGlue类,所以对于UI组件的读取方式也应该改变一下。在本例中,这段脚本代码位于函数applyFilter()体内:

将下面的一段脚本代码

list_lb.dataProvider = resultRecordSet.filter(thisFilter, hotelName_cb.selectedItem["hotelName"]);

替换为

list_lb.dataProvider = resultRecordSet.filter(thisFilter, hotelName_cb.selectedItem.label);

5最后可以测试一下效果,可以看到与前面的例子功能相同。

9.5使用RemotingConnector组件和数据绑定

RemotingConnectorFlash的一个数据组件,使用该组件你可以非常轻松的建立与远程服务的连接——该远程服务必须是通过Flash Remoting MX网关提供——并且可以调用远程服务所定义的方法函数,使用它只需要将该组件拖放到舞台上并定义组件参数,而且可以使用Flash的数据绑定功能。

我们在这里要介绍的是首先是通过编写脚本代码的方式使用RemotingConnector组件。

9.5.1编写脚本代码使用RemotingConnector组件

要通过编写脚本代码的方式使用该组件,也必须首先在开始将RemotingConnector组件拖放到当前舞台上(或者只要在库中就可以了),然后才能开始编写代码使用该组件,这是使用该组件的第一步。

另外,在编写脚本代码时要导入RemotingConnector类,这是使用该组件编写脚本代码的第一步,可以使用下面的脚本语句:

import mx.data.components.RemotingConnector;

下面我们就使用一个例子来看一下怎样使用该组件。

1打开前面一节我们创建的Restaurant_component.fla文档,将文档另存为Restaurant_component_RC.fla

2保持文档处于主时间轴的编辑状态,改变主时间轴上的脚本代码如下:

stop();

//-------------------------------------------------------------

//导入RemotingConnector

import mx.data.components.RemotingConnector;

//构造RemotingConnector组件实例并定义实例属性

var my_rc:RemotingConnector = new RemotingConnector();

my_rc.addEventListener("result", returnRowSet_Result);

my_rc.addEventListener("status", returnRowSet_Status);

my_rc.gatewayUrl = "http://localhost:8080/3JK/gateway";

my_rc.methodName = "returnRowSet";

my_rc.serviceName = "3JK";

my_rc.suppressInvalidCalls = true;

function GetRestaurantInfo():Void {

if (selectedhotel_name == undefined && selectedhotel_flavor == undefined && selectedhotel_location == undefined) {

//定义参数为空

my_rc.params = null;

//触发连接,调用远程服务方法

my_rc.trigger();

} else {

//定义传递给远程服务方法的参数

my_rc.params = {hotel_name:selectedhotel_name, hotel_flavor:selectedhotel_flavor, hotel_location:selectedhotel_location};

//触发连接,调用远程服务方法

my_rc.trigger();

selectedhotel_name = "正在加载数据";

}

}

function returnRowSet_Result(ev:Object) {

//接收结果

main_mc.list_lb.removeAll();

main_mc.list_lb.dataProvider = ev.target.results;

selectedhotel_name = "";

fetchOK = 1;

main_mc.resultRecordSet = ev.target.results;

}

function returnRowSet_Status(stat:Object) {

//接收错误

trace("接收到错误");

}

//初始化

function ini():Void {

if (this.inited != undefined) {

return;

} else {

var inited:Boolean = true;

GetRestaurantInfo();

}

}

ini();

3打开组件面板,将RemotingConnector组件拖放到舞台上创建一个实例(实际,只需放到库中就可以了)。

最后可以测试一下效果,可以看到与前面的例子功能相同。

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(4)

06 AMF-RPC for Java基础入门

在前面的章节,我们介绍了Flash如何通过中间件JSP与服务器之间实现数据交换,了解了Flash影片应用程序如何融入到网络应用环境的最一般原理,有了基本的创建具有网络交互功能Flash影片应用程序的基本知识。

这一章,我们将开始使用Flash的一个最重要的服务器组件AMF-RPC来实现与Flash影片应用程序的交互,用户可以感受到更加强烈的Flash网络应用程序“感觉”,从而可以更轻松的创建功能更强大的Flash网络应用程序——这就是“富媒体应用程序”。

使用Flash作为开发工具,我们现在可以开始学习怎样使用AMF-RPC创建更为强大而且易用的富媒体应用程序了。

6.1 AMF-RPC技术简介

AMF-RPC是使用AMF 数据格式实现的远程方法调用,Macromedia公司为此出品了三个个实现:Flash Remoting MX for J2EE(以前也被称为Flash Remoting MX for Java)、Flash Remoting MX for .NETFlash Remoting MX for ColdFusion,并且开源社区也为AMF-RPC编写了一个在PHP架构下的实现,名为AMFPHP(也可以称为Flash Remoting MX for PHP)。

就如其它的RPC工具一样,AMF-RPC是一个应用程序服务器网关,它在Flash影片应用程序和远程服务之间提供一个相互通信的网络通道:在这个通道间传输的是AMF格式的数据(AMF是专用于Flash远程数据传输的一种数据格式);远程服务则包含各种应用服务技术(例如JavaBeansColdFusion组件和网页、ASP.NET网页或者Web服务等等)。

和其它的连接到外部数据提供者的技术相比,AMF-RPC的优点是不言而喻的。在前面一章我们介绍的像getURLloadVariablesXMLXMLSocket等语句,它们都是使用的简单的HTTP功能,一般都离不开内建的类如RequestResponse这样的语法,而AMF-RPC则有其独特的一面,总的说来有下列优点:

[1]易用。AMF-RPC可以对本地远程服务程序代码(JavaCFMLPHPC#)的数据类型进行自动转换:可以转换成ActionScript代码数据类型,也可以转回本地远程服务程序代码数据类型。

[2]高性能。AMF-RPC使用Action Message FormatAMF)将Flash影片应用程序和远程服务之间的通信信息序列化。AMF是一个二进制格式,符合Simple Object Access ProtocolSOAP)协议格式,通信更加快速。

[3]可扩展性。AMF-RPC设计的时候集成了现有应用程序设计模式和最佳的开发实践,从而可以满足高度扩展性Flash网络应用程序设计要求。

要了解这些优点,最好是先来看一个简单的使用AMF-RPC创建的Flash网络应用程序。



现在马上出发

作者邀您访问他的BLOG: http://zhang-yafei.spaces.live.com(繁体)
作者邀您访问他的BLOG: http://blog.csdn.net/zhang_yafei/(简体)

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(3)

第Ⅱ篇 Flash网络应用程序和Flash Remoting

在第一篇,我们介绍了Java for Flash的基本原理,了解了怎样使用Flash内建的功能方法与Java实现交互,这种交互方式其实是一种极其简单的HTTP操作,来回传递的都是字符串格式的数据(XML也是字符串,需要解析为DOM)。

人们需要一种更为简洁的方式能够实现类似Native的操作,于是Flash Remoting便应运而生,这符合IT工业的一贯标准。

在这一篇,我们将介绍怎样使用包括XML-RPCWDDXSOAPAMF-RPC(包括Flash Remoting MXOpenAMF)等在内的Flash Remoting技术,开发人员可以更轻松的完成过去需要编写很多代码才能完成的任务。

本篇包含很多的章节,是本书的主体部分,主要就是介绍怎样使用各种Remoting工具实现Java for Flash的强大体验。



现在马上出发

作者邀您访问他的BLOG: http://zhang-yafei.spaces.live.com(繁体)
作者邀您访问他的BLOG: http://blog.csdn.net/zhang_yafei/(简体)

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(2)

01 开发和运行环境的安装与配置

Java for Flash动态网站开发手札》又被称之为网络三剑客,它提供了使用Flash PlayerXMLJava建立下一代网络应用程序最迅速、最大限度节省投资和最具有挑战性的方法组合,这一组合事实上包含四个方面:Flash Player的应用环境、XML的应用环境、Java应用环境以及这三个应用环境的相互关联。

Flash PlayerXMLJava这三剑客组成的软件运行环境中:Java是基础架构,它为Java应用程序提供运行环境,并且JSPServletJavaBeansEJBJMX MBean等程序组件都是在后端运行;Flash PlayerFlash影片应用程序在前端运行的解释器(也是一个虚拟机),必须安装在客户端。Flash RemotingFlash影片应用程序连接到Java程序的服务器和网关,它们之间的连接也是在后端运行。

本章我们就来介绍怎样安装和配置网络三剑客的开发和运行环境。

1.1新架构的优点

使用网络三剑客架构,事实上包含四个方面:Flash Player的应用环境、XML的应用环境、Java应用环境以及这三个应用环境的相互关联。

XML:标准的数据交换格式

尽管简单得令人难以置信,XML确实正在彻底改变我们创建和使用软件的方式。WEB彻底改变了用户与应用程序的交互方式:通过提供一种能使数据更易适配或更易转换的通用数据格式,XML正在彻底改变应用程序间的交互方式——或者更广义地说,计算机间的交互方式。包括SOAPUDDI 在内的基于XML的标准,构成了应用程序间通信的开放式方法,此方法叫做XML WEB服务,而我更愿意称之为SOAP-RPC

Java:开放的、成熟的和规范的基础架构

Java是目前市场上主流的企业及分布式应用程序开发平台,它是在Sun公司的领导下,多家公司参与共同制定的应用程序开发规范,正是因为它是一种规范、它的开放性,所以能够得到了业界的广泛支持。并且经历了几年的发展,Java已经经受住了市场的考验,成为一种成熟的开发平台。使用Java架构能够快速、高效的开发出可移植的、跨平台的、具有强大功能的企业级Web应用程序。

Java包含多种技术,它们之间互为补充,实现不同功能。包括:Java Servlet技术、Java Server PageJSP)技术、JavaBeans技术、EJB技术等。

通过JSP(最终被编译成Servlet)和Servlet这一中间件,我们可以在Flash Player与服务端之间进行数据交换;而通过JavaFlash Remoting这两个中间件,使得创建服务端与Flash Player的关系变得更加容易,更加轻松自如。

Flash Player:跨平台跨设备的富媒体客户环境

Flash Player是功能强大的富媒体客户环境,只要平台或设备上正确的安装了Flash Player,用户就可以浏览使用Flash影片应用程序。

如同Java一样,Flash影片应用程序同样具备了一次开发,可以跨平台跨设备随意浏览的特性(而且不需要重新编译),这就是Flash的一个最大的优点。无论是在WindowsMacLinuxUnix还是在Symbian操作系统(Nokia应用于移动电话的一种操作系统)上,也不论你是在桌面PC上还是在掌上电脑或是移动电话上,Flash影片应用程序都能发挥它最大的特点。这一点我们想着重的作一下对比,如表1.1所示:

1.1 FlashJava对比


Flash影片应用程序

Java应用程序

运行环境

Flash Player(不同平台有不同版本)

JVMJava虚拟机,不同平台有不同版本)

编译

P代码

字节码

不同平台

不需重新编译

不需要重新编译

开发难易程度

简单的图形化开发

图形化开发稍逊

Flash Player内建的ActionScript脚本语言是Flash Player的交互语言,它有几个版本,每种版本的ActionScript的语法和风格各不相同,但可以在同一个运行时下协调工作。Flash Player不但可以凭借内建的XML类加载和解析标准的XML数据。而且通过Flash Remoting MX很轻松的连接到一个应用程序开发人员要使用的远程服务端和WEB服务并实现数据交换,使得Flash影片应用程序的开发简单有效。

并且,随着Flash Media Server(简称FMS)的发布,用户更可以将视频和音频(包括实时视频和音频)集成到应用程序中,实现声音、图像、文字、数据同步传播。并且,你也可以将声音、图像、文字、数据等录制下来,通过eMail发送出去(需要编程实现)。

并且,FMS服务器和Flash Remoting MX可以无缝的集成到一块儿。有了FMS服务器和Flash Remoting MX的集成,你从而可以连接数据库以及驱动Java应用程序服务器以创建功能更强的Flash影片应用程序,并将其融入到Flash Player当中,从而为终端用户带来全新的富媒体应用程序体验。

和传统的基于HTML的浏览器应用程序相比,Flash影片应用程序在创建动态和复杂的、友好的用户界面方面有其独到的优势,包括:

1Flash Player运行时执行代码、传递数据和调用远程服务

2客户端展示逻辑与服务端应用程序逻辑相互独立

3有效的利用带宽,不需要刷新整个网页,使用矢量图形

4可以部署在多个平台和设备上,并且非常简单

这就是深具魅力的《Java for Flash动态网站开发手札》。

技巧与提示

用户必须区分Flash Remoting MXFlash RemotingFlash Remoting MXMacromedia的一款产品,在本书中我时常称之为AMF-RPC(本书中同时介绍的OpenAMFAMF-RPC的另一种实现)。

Flash Remoting是一个宽泛的定义,包括XML-RPCWDDX-RPCRTMP-RPC(也就是FMS)等都可以称为Flash Remoting。而Flash Remoting MXAMF-RPC)仅是Flash Remoting中的一种。

现在马上出发

作者邀您访问他的BLOG: http://zhang-yafei.spaces.live.com(繁体)
作者邀您访问他的BLOG: http://blog.csdn.net/zhang_yafei/(简体)

Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(1)

第Ⅰ篇 Java for Flash基础入门

学习任何技术都有一个基础知识,Java for Flash也不例外。本篇包含几个章节,介绍了Java for Flash的基本知识。

在第一章,我们介绍了如何安装和配置Java for Flash的开发和运行环境,这样,用户就可以开发Flash网络应用程序以实现和Java应用程序的交互。

在随后的几章,我们介绍了如何使用Java语言、如何使用JDBC结合数据库以及面向对象的Java开发。

而在第五章,我们开始使用传统的JSP网页作为中间件方法开发Flash网络应用程序,与服务器之间实现数据交换,了解了如何建立网络环境的最一般原理,有了基本的创建具有网络交互功能Flash影片应用程序的基本知识,这是实现使用Flash影片应用程序作为网络应用程序主体的一次“飞跃”。


现在马上出发

作者邀您访问他的BLOG: http://zhang-yafei.spaces.live.com(繁体)
作者邀您访问他的BLOG: http://blog.csdn.net/zhang_yafei/(简体)

1月23日

Google 會對使用 Macromedia Flash 的網站建立索引嗎?

以下內容來Google的說明:

會的,Google 會對使用 Macromedia Flash 的網頁建立索引。不過,我們的檢索器可能會在產生 Flash 網頁索引時發生問題。如果您擔心網頁上的 Flash 內容會抑制 Google 檢索您網站的能力,您可以考慮使用如 Lynx 的文字瀏覽器來檢查您的網站。如果 Flash 此類的功能無法讓您以文字瀏覽器瀏覽您網站的所有內容,則當搜尋引擎的自動尋檢程式在檢索您的網站時就可能會有問題。

您可以考慮為我們的檢索器建立這些 Flash 網頁的 HTML 副本。如果您建立 HTML 副本,請務必加入一個可防止 Flash 網頁被檢索的 robots.txt 檔案,以確保我們的檢索器不會將這些網頁視為重複的內容。

最後,請考慮使用 Google Sitemaps,建立與提交您網頁的詳細 Sitemap。有了 Google Sitemaps,您就可以輕鬆地將所有您的 URL 提交至 Google 索引,並且取得關於您的網頁在 Google 上的曝光率的詳細報告。您可以使用 Google Sitemaps,將您目前的所有網頁及對這些網頁所做的任何變更自動通知我們。請注意,提交 Sitemap 不保證會我們會檢索您網站的所有網頁,或將其包含在我們的搜尋結果中。若要瞭解更多關於 Google Sitemaps 的資訊,請造訪 http://www.google.com/webmasters/sitemaps/about?hl=en

引自:http://www.google.com.tw/support/webmasters/bin/answer.py?answer=35267

1月10日

apple iphone精美大图

这下,nokia、moto等真的该着急了:

1月3日

《.NET for Flash动态网站开发手札》相关勘误、更新、下载(1)

我亦欢迎您直接在此留贴。谢谢!!!!

129页,第8步.应该是"调整第1帧和第20帧上矩形的高度至最小".

129页,第6步.应该是"第1帧和第2帧创建两个关键帧".

谢谢qinglu008的来信。

《Java for Flash动态网站开发手札》相关勘误、更新、下载(1)

[更正启示0001:]
在书的81页第四行发现了一个文字错误-------webapp.aspx,应该是webapp.jsp才对。

[更正启示0002:]
在书的第一章前几段文字,由于编辑的不小心造成。实际的文章可以参考下面的连载帖子:
http://blog.csdn.net/zhang_yafei/archive/2007/01/03/1473185.aspx

不断更新中,我亦欢迎您直接在此留贴。谢谢!!!!

Flash和Java結合的方式總結(Flash和Java通訊)

《Java for Flash動態網站開發手札》內包含了明確地介紹了Flash和Java結合開發時要用到的各種技術,但是它比較太寬了,包含了web伺服器和Java應 用程式伺服器,下面我們在這裏做一個分隔出來的技術總結,怎樣在Flash和Java應用程式伺服器之間通訊:

[1]使用MovieClip物件的getURL、loadVariables、loadVariablesNum方法可以使用HTTP或HTTPS協定以URL編碼格式向Java應用程式伺服器傳遞和接收資料。

[2]使用LoadVars類的load、send和sendAndLoad方法可以使用 HTTP 或 HTTPS 協定以URL編碼格式向Java應用程式伺服器傳遞和接收資料。

[3]使用XML類的XML.send、XML.load和XML.sendAndLoad方法可以以XML格式向Java應用程式伺服器傳遞和接收資料,這還包括一些基於XML的變種形式,例如WDDX、SOAP等。

[4]使用XMLSocket類的XMLSocket.connect 和 XMLSocket.send方法可以創建和使用TCP/IP套接字連接從而以XML 格式向Java應用程式伺服器傳遞和接收資料。

[5]使用Connection類或者NetConnection的call方法可以使用AMF協定向Java應用程式伺服器傳遞和接收資料,這被稱為AMF-RPC的方式,還包括其他的變種形式,但都統稱為AMF-RPC方式。

2008年10月11日 星期六

2006年12月集合

把应用程序从 Internet Explorer 迁移到 Mozilla

这篇文章讲述了Internet Explorer和Mozilla在渲染方面的区别,很有特色,所以推荐一下。
当然,还有很多需要用户在不断的测试中才能获得。
12月25日

推荐看一下梦境家园

这个做得真不赖,非常值得一看,
而且.......

C#代码和VB代码相互转换常用的工具

VB2C#
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx
http://www.instantcsharp.com/

C#2VB

http://www.kamalpatel.net/ConvertCSharp2VB.aspx
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx
http://www.instantcsharp.com/

也有很多工具可以下载,搜索一下喽。

ASP、Java、PHP和.NET開發者學習Flash正是時候(1)

ASPJavaPHP.NET開發者,無論是開發網路應用程式還是開發桌面(Stand Alone)應用程式,都是一個基本的開發模式,或基於網頁,或基於表單。這非常易於理解,因為每個人都有親身的實踐,或這樣,或那樣。

但是,Flash開發看起來不像是其中的任何一種,這使得原有的開發人員在進入Flash開發時,遇到了前所未有的阻力,也使得原有開發者覺得Flash開發不可思議

雖然也有用戶在不斷的摸索中獲得一點點實踐上的認知,但都不能足以向用戶表明有某種行之有效的開發模式。

我也在一直尋找一種合理的能夠貫穿到整個開發過程的開發模式。在我的前一本書中,我第一次提出了“Flash是基於時間軸的應用程式”的概念,並沿著這一線索不斷前進,最終在《Flash ActionScript X 開發入門》一書中最終完成體系建設。

這是破天荒的第一次,在星羅密佈的、到處被捧為權威的英文大佬面前,竟然是在一本中文書中,它為整個Flash開發奠定基石。

說起來很可笑,因為這一開發體系十分的簡單,任何人都可以非常輕鬆的理解它,掌握它,無論你是ASPJavaPHP抑或.NET開發者。

當你在開發網頁時,你可能會(或者說必須會,除非你只有一個網頁)在不同的網頁之間跳轉,依靠的是Form Action或者鏈結,而Flash開發不同,它是在時間軸的不同幀之間跳轉,它用的只是像gotoAndPlay(frame)或者gotoAndStop(frame)這樣的簡單語句完成跳轉。它把每一幀當成是一個網頁。

當你在開發桌面應用程式時,你會在不同的表單間跳轉,或者載入MIDI表單,而Flash開發也還是同樣在時間軸的不同幀之間切換,它用的同樣只是像gotoAndPlay(frame)或者gotoAndStop(frame)這樣的簡單語句完成跳轉。只是,它把每一幀當成是一個表單。

一旦有了正確的方向,有了正確的方法論,現在你就可以毫不費力的完成以前看起來需要在黑夜裏不停摸索才能完成的小事情

=====================================================================

Flash開發的淵源可以上溯到Flash3,但公認的真正用於開發的版本是Flash5,到現在是Flash8,也經歷了很多年的實踐和摸索。

任何一個其他領域內的開發者絕對不敢想像,經歷這麼多年的實踐和摸索,Flash開發竟然在“變數的作用域”這一最基本的問題上一片混亂,這有點可笑。甚至有56年開發實踐的“資深者”也不過是按照自己的實踐來在摸索、試探中完成創作。在這種情況下,ASPJavaPHP.NET開發者不願來趟這潭渾水便不難理解了,直到在《Flash ActionScript X 開發入門》一書中,它為這混亂畫上了句號。

這也是破天荒的第一次,在星羅密佈的、到處被捧為權威的英文大佬面前,竟然是在一本中文書中,它為整個Flash開發在變數作用域這一最基礎問題上奠定基石。

=====================================================================

當人人都試圖躲避某個問題時,那這個問題就顯得尤為突出。當到現在仍然有用戶在如何完全解決中文支持問題上躊躇不前的時候,當你在社區的某個帖子中看到有人還在喋喋不休的討論它時,我在前一本拙著中早已明確了下來。在《Flash ActionScript X 開發入門》一書中,它更加豐富,並且提供了全部的參考實現。

這也是破天荒的第一次,在星羅密佈的、到處被捧為權威的英文大佬面前,竟然是在一本中文書中,請原諒他們不太介意中文的雙位元組編碼。

如果您不介意,請讓我為您提供一些位址可以作一個比較(Flash or ActionScript作為關鍵字):

繁體中文版

金石堂網上書店天龍網上書店誠品網上書店博客來網上書店華文網網上書店HOT網上書店

英文版強烈推薦

亞馬遜網上書店(美)、巴諾網上書店(美)、亞馬遜日本網上書店(日)、株式會社翔泳社網上書店(日)、yes24網上書店(韓)、其他國內的網上書店

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

12月24日

如果有一个中国人在奥运会上获得金牌,我便会感到耻辱

如果你了解这一块金牌要花掉纳税人10亿块时,我想你也应该感到耻辱。
当有人为他们喝彩师,我依然感到耻辱。
看看那些整日辛勤劳作、挥汗如雨的人们吧,想一想你身边的人。

使用Flash濾鏡,只需幾步就可以創建立體書脊(4)

在《Flash ActionScript X開發入門》一書中,您可以同樣看到相似的案例,通過使用創作環境,進而使用ActionScript代碼,您可以實現水晶字效果,就如同您使用濾鏡創建立體書脊一樣,如圖所示:
我們希望借由簡單的案例幫助用戶打開一扇窗戶,透過它,您可以眺望遠方,而不是面對一堵牆。

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

12月23日

铅笔动画的创作,棒

今天从RIA用户组成员 青枫的blog 上看到铅笔动画的创作,仅仅用十分简单的线条就表现出了非常棒的效果,这就是矢量图和Flash带给用户的效果。
非常棒,推荐一下:
其中有一下面这两个最为好看
另外,在MAX年会上,另一个动画公司也展示了他们创作的两个较为经典的动画:“Flash创作环境大战”和“桌面大战”,也非常值得推荐:
前面都有一段广告片,等广告片完了就会出现。
希望更多的拥有BLOG的用户加入RIA用户组
12月22日

[临时贴]感冒了

眼看着纸一卷一卷的进了垃圾筐,又睡不着。
12月21日

使用Flash濾鏡,只需幾步就可以創建立體書脊(3)

在前面的例子中,我們可以在創作環境中使用簡單的幾個步驟就可以完成一個立體書脊,這幾個步驟看起來更適合設計者,對於開發者,同樣可以非常簡單的完成這一創作。只需幾行代碼就可以了。
[1]首先還是將圖片導入到Flash中,分別選中各個圖片,按F8鍵將他們一個一個的轉成影片剪輯元件(我新添了兩個圖片),然後選中舞臺上的一個元件實例,在屬性面板上命名實例名,只有命名實例名才好使用程式碼對物件進行操作喔:
將這幾個實例分別命名為pic_1_mc、pic_2_mc、pic_3_mc、pic_4_mc、pic_5_mc、pic_6_mc。
[2]選中主時間軸上第1影格,按F9鍵打開“動作”面板,鍵入下面的代碼:
import flash.filters.GlowFilter;
import flash.filters.DropShadowFilter;
//注意構造器中的參數應該與“屬性”面板上濾鏡的參數相同
var filter_1:GlowFilter = new GlowFilter(0x000000, 100, 2, 2, 2, 1, false, false);
var filter_2:DropShadowFilter = new DropShadowFilter(14, 0, 0x000000, 0.7, 5, 5, 1, 15, true, false, false);
//創建一個陣列用於組合濾鏡
var myFilters:Array = new Array();
myFilters.push(filter_1);
myFilters.push(filter_2);
//將濾鏡賦給對象
pic_1_mc.filters = myFilters;
pic_2_mc.filters = myFilters;
pic_3_mc.filters = myFilters;
pic_4_mc.filters = myFilters;
pic_5_mc.filters = myFilters;
pic_6_mc.filters = myFilters;
[3]現在,按Ctrl+Enter就可以看一下效果了:

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

[临时贴]中国要理性正视利益集团问题

今天在金融时报上看到安邦战略观察为金融时报的独家供稿,颇为感兴趣。
讲得很有见地,分寸也掌握得很好,欲言又止,点之未破。好文。
12月20日

使用Flash濾鏡,只需幾步就可以創建立體書脊(2)

注意事項:
1、不要將所有圖片放在一個影片剪輯內,一定要一個圖片一個影片剪輯,否則,如果圖片放在一個影片剪輯內,那麼濾鏡就會僅對這個影片剪輯施加作用了。

很可能的結果是僅有一個書脊呈現立體效果,除非將所有圖片排成一列,左對齊,這時才能為每個圖片呈現效果。

對於設計師來說,這其實也是“面向物件”哦,面向物件並非開發者所獨有。
2、再談一點,就是投影濾鏡的角度問題,因為要將整個投影從左至右完全水準放置,所以你必須將角度設置為0。

由此,也可以理解投影濾鏡全部角度的含義。
3、在應用發光濾鏡時,要注意顏色的設置,我們的目的是使邊緣有別於背景顏色,所以在選擇濾鏡顏色參數時,就必須選擇一個有別於背景顏色的設置。

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

[临时贴]《Java FOR FLASH动态网站开发手札》已在书店有售

号外,我的新书《Java FOR FLASH动态网站开发手札》已经在书店有售了,特通知一下大家。现在买是7折哦!!!
12月14日

使用Flash濾鏡,只需幾步就可以創建立體書脊(1)

前几天为了给自己的图书封面加一些花缀,主要是想让封面更有立体感,我用上了Flash滤镜,谁知竟然简单的几步就可以实现如此美妙的效果。

下面拿出制作步骤来分享一下。

[1]首先准备几个图书封面,记得要带书脊哦。我呢就将我的几本简体书的封面拿出来了,记得要一个一个分开的图片(我的是png格式,是无损压缩喔),如图所示:





[2]然后一个一个导入到Flash中,分别选中各个图片,按F8键将他们一个一个的转成影片剪辑元件,这样才好应用滤镜哦。
最后在舞台上的效果如图所示:



[3]现在你可以选中舞台上的所有影片剪辑,然后打开滤镜面板(按Ctrl+F3先打开属性面板,然后再点击“滤镜”选项卡就可以看到滤镜喽)。点击“加 号”就会弹出菜单哦,从菜单上选择“投影”,就会在下面的列表框中出现哦,然后选中它,在右侧的选项中作如图所示的设置(注意色彩要使用Alpha喔,我 这里用70%):



现在看一下效果:



有些不美呀,怎么边缘与背景相同,不见边界,不够完美。

[4]在滤镜面板上再点击“加号”,从菜单上选择“发光”,就会在下面的列表框中出现哦,然后选中它,在右侧的选项中作如图所示的设置:



现在来看,喔,效果不错呦:



现在马上出发

作者邀您访问他的BLOG: http://zhang-yafei.spaces.live.com




要瞭解Flash CS4 Professional,就經常訪問張亞飛的Blog
http://cn.zhang-yafei.com/
(簡體)
http://tw.zhang-yafei.com/
(繁體)

要正確地開發萬維網應用程式就必須瞭解《萬維網應用程式開發綱要》:

http://blog.csdn.net/zhang_yafei/archive/2008/06/22/2574348.aspx
(簡體)
http://zhang-yafei.spaces.live.com/blog/cns!5358FA09E8EB6188!1047.entry
(繁體)

要正確地認識Flash ActionScript 3.0開發,就必須首先閱讀:
飛痛都不能完整掌Flash
(簡體)
飛痛都不能完整掌Flash
(繁體)

要完整系統的學習Flash設計和開發,就必須閱讀有關Flash設計和開發的三個基本文件,並在學習過程中最終理解這三個基本檔的內容:

[01]《完整、系統的把握Flash動畫設計的知識體系》
[02]
《完整、系統的把握Flash ActionScript開發的知識體系》
[03]
《完整、系統的把握Flash動態網站開發的知識體系》
可以通過搜索引擎獲取它們。


关于《Java for Flash动态网站开发手札》

如果說【完整、準確地把握Flash動態網站開發的知識體系】是一個規範的話,那麼本書是他的一個實現,我想開發人員會很樂意聽到這句話,因為這才是行業術語。通過本書,一個在Java架構基礎下的Flash網路應用體系最終得到完整體現。

本書共分四大主題

第一篇 Java for Flash 基礎入門

第二篇 Flash 網路應用程式和Flash Remoting

第三篇 Flash 網路應用程式和FMS

第四篇 大規模開發、除錯與部署

以深入淺出的實例,說明如何利用Java來輔助Flash應用程式的開發,並加強Flash Remoting的安全性,為您的資料庫把關。最新、最IN的flash應用整合,敎您設定FMS(Flash Media Server )並與Java完美結合,讓您的動態網站盡善盡美!透過一個完整的餐廳訂位系統案例,循序漸進地指導讀者完成使用者註冊、驗証、線上訂位、查詢、資料庫建 置與維護等功能,並且你還可以學習怎樣透過FMS與Java的結合,使店員和食客能夠即時的交流。Flash設計師,可以藉由本書,學習到更為進階Flash應用技巧,加強功力;Java程式設計師,也可以藉由本書,學習到如何利用Flash來製作出界面更加華麗的應用程式。

本書特點

      • 與FMS(Flash Media Server)結合,讓Java for Flash有聲有色,更加完整。
      • 新一代Flash結合Java和資料庫,提升運行和開發效能。
      • 透析Flash網路應用的安全核心,加強Flash Remoting在會話及對應物件的安全性。
      • 理論與實務並進,用開發理論的闡述,佐以實際案例的開發,學習效果最佳!
      • 最符合中文環境的需求,中文處理問題解決方案大公開,讓您可以完全滿足客戶的需求!
      • 直擊Flash Remoting核心技術,包含多種Java平臺下的Flash Remoting實現(XML-RPC、WDDX、SOAP、Flash Remoting MX和OpenAMF)。
在网上书店预订和购买此书:华储网上书店第二书店互动出版网

要瞭解Flash CS4 Professional,就經常訪問張亞飛的Blog
http://cn.zhang-yafei.com/
(簡體)
http://tw.zhang-yafei.com/
(繁體)

要正確地開發萬維網應用程式就必須瞭解《萬維網應用程式開發綱要》:

http://blog.csdn.net/zhang_yafei/archive/2008/06/22/2574348.aspx
(簡體)
http://zhang-yafei.spaces.live.com/blog/cns!5358FA09E8EB6188!1047.entry
(繁體)

要正確地認識Flash ActionScript 3.0開發,就必須首先閱讀:
飛痛都不能完整掌Flash
(簡體)
飛痛都不能完整掌Flash
(繁體)

要完整系統的學習Flash設計和開發,就必須閱讀有關Flash設計和開發的三個基本文件,並在學習過程中最終理解這三個基本檔的內容:

[01]《完整、系統的把握Flash動畫設計的知識體系》
[02]
《完整、系統的把握Flash ActionScript開發的知識體系》
[03]
《完整、系統的把握Flash動態網站開發的知識體系》
可以通過搜索引擎獲取它們。

关于《.NET for Flash动态网站开发手札》

This book will be released!!!!

在网上书店预订和购买此书:华储网上书店第二书店互动出版网



要瞭解Flash CS4 Professional,就經常訪問張亞飛的Blog
http://cn.zhang-yafei.com/
(簡體)
http://tw.zhang-yafei.com/
(繁體)

要正確地開發萬維網應用程式就必須瞭解《萬維網應用程式開發綱要》:

http://blog.csdn.net/zhang_yafei/archive/2008/06/22/2574348.aspx
(簡體)
http://zhang-yafei.spaces.live.com/blog/cns!5358FA09E8EB6188!1047.entry
(繁體)

要正確地認識Flash ActionScript 3.0開發,就必須首先閱讀:
飛痛都不能完整掌Flash
(簡體)
飛痛都不能完整掌Flash
(繁體)

要完整系統的學習Flash設計和開發,就必須閱讀有關Flash設計和開發的三個基本文件,並在學習過程中最終理解這三個基本檔的內容:

[01]《完整、系統的把握Flash動畫設計的知識體系》
[02]
《完整、系統的把握Flash ActionScript開發的知識體系》
[03]
《完整、系統的把握Flash動態網站開發的知識體系》
可以通過搜索引擎獲取它們。





完整、準確地把握Flash動態網站開發的知識體系(Flash網路開發用戶必讀)

完整、準確地把握Flash動態網站開發的知識體系

——Flash網路開發用戶必讀

[摘 要]

本文明確闡述了應用Flash和伺服器端軟體(包括Java、.NET、ASP、PHP、ColdFusion等)進行網路應用程式開發、除錯和部署的完整知識。

完備而充足:完全的技術基礎大公開、完全的中文解決方案大公開、完全的安全架構原理大公開、完全的Flash Remoting實現大公開、完全的應用案例大公開。對知識體系進行了總結歸納,建立一個邏輯的知識體系,以利於用戶快速、準確、完整地掌握它。

[關鍵字]

動態網站開發,網路三劍客,富媒體應用程式,用戶體驗,Flash Player,Flash,ActionScript,Flash Remoting,RIA,AMF-RPC,FMS,XML,XML-RPC,WDDX,SOAP,.NET,Java,PHP,ASP, Database,PHP for Flash 網站開發手札,Java for Flash 動態網站開發手札,.NET for Flash 動態網站開發手札,ASP for Flash 動態網站開發手札,More

[正 文]

“Flash動態網站開發”正是炙手可熱的 “資料驅動的富媒體應用程式”的核心,之所以這樣講,正是出於對用戶和技術的深入理解:

商業用戶需要的是低成本所帶來的高收益;而最終的消費者需要的是最佳的體驗。

Flash也許是通向最佳體驗的最佳應用之門。由Flash Player、伺服器端應用程式以及XML構建的架構我最喜歡稱之為網路三劍客(注意區別於網頁三劍客),它提供了使用Flash Player、XML和伺服器端應用程式建立下一代網路應用程式最迅速、最大限度節省投資和最具有挑戰性的方法組合,這一組合能夠滿足商業用戶和最終消費 者的需要。

為什麼是“Flash動態網站開發”?

為什麼?是啊,這是一個非常有趣的話題。近十幾年來,Internet以前所未有之勢使應用程式開發領域發生了根深蒂固的變化,許 多組織越來越依賴於由Internet及相關技術提供的數位資源和通訊通道。現在,在設計和開發應用程式時,幾乎所有人都會考慮如何最有效地結合與利用 Internet技術以便充分利用連接計算所帶來的好處。

[1]C/S到B/S結構

在過去的幾年,在這樣的網路應用程式開發過程中,開發人員都注意到了一種情況:那就是流覽器已經成為幾乎所有應用的標準用戶端,而 包含Web網頁、中間件和資料庫在內的三層架構構成了各種應用的標準支撐平臺,從根本上完成了C/S(客戶機/伺服器)結構到B/S(流覽器/伺服器)結 構應用模式的轉變。

在B/S結構應用模式中,必須仔細地看待由Web網頁、中間件和資料庫構成的三層架構。在這三層架構中:Web網頁處於 最頂層,代表著流覽器(或者說是用戶端Web動態和靜態內容的解釋器);最底層是應用程式中的原始資料,動態內容依賴於這些資料,這就是資料庫;中間件是 用來執行資料(業務)邏輯運算的組件,對於Microsoft.NET,這個組件是.vb、.cs等檔編譯而成的.dll程式集;對於Java,這個組件 是JavaBeans、EJB等Java類;對於ColdFusion,這個組件是CFC;對於PHP,這個組件是PHP類(PEAR);或者還應當包括 JSP、Servlet、CFM、ASP、ASPX、PHP等動態網頁。

[2]終端設備正在不斷的異化,虛擬機是大勢所趨

同時,也應當注意到,終端設備正在不斷的異化。可以流覽Internet的各類設備正在成幾何倍數地增長,如今移動電話、智慧型電 話、個人數位助理(PDA)、互動式電視系統或電話亭,甚至某些家用電器也能做到。為了能夠在不斷異化的終端設備上形成一致的流覽體驗,也為了不斷地降低 創作成本,人們都已經認識到,虛擬機已是大勢所趨,它正在不斷成為人們關注的目標。

[3]“富媒體”應用程式就是未來

與此同時,一種我們稱之為“富媒體”的應用程式逐漸開始升溫,“富媒體”的核心是位於用戶端的虛擬機,而Flash Player是其中的佼佼者。

有了Flash極富魅力的流媒體格式,有了ActionScript,便有了Flash影片應用程式,這是極富魅力的富媒體應用程式。在用戶端,承載該富媒體應用程式的是Flash Player。

正是由於Flash Player的出現使得C/S與B/S之間的界限變得模糊起來,因為使用Flash Player,你可以將Flash影片應用程式當作是C(客戶機)也可以當作是B(流覽器),而這就使得C/S與B/S逐漸走向融合。

[4]不可獲缺的創作環境和運行時

從FutureSplash Animator(Flash的前身)到Flash 8,Flash由一個基本動畫創作工具發展到一個完整的多媒體編著環境和網路互動開發環境,它已經是一個名副其實的整合開發環境(IDE)。Flash Player也從一個簡單的動畫解釋器發展成一個稱為富媒體用戶端(Rich Media Client)的東西。富媒體用戶端是一個在內容、通信以及應用程式上具有高度繼承性的瘦客戶(Thin-Client)環境,正如前述,這符合網際網路 發展的方向。

Flash Player是高度整合和極富擴充性的富媒體用戶端,所有的Flash影片應用程式都由Flash Player解釋。Flash Player不但可以作為流覽器的插件,而且還可以作為獨立的流覽器解釋Flash影片應用程式。

[5]Flash Player與Flash Remoting

與高度整合和極富擴充性的富媒體用戶端對應,我們也有了各種各樣的Flash Remoting技術:包括XML-RPC、WDDX、SOAP和AMF-RPC等,這是Flash的後端服務。

Flash動態網站開發的原理

Flash Player將請求和資料發送給後端伺服器應用程式,後端伺服器應用程式接收到請求,通過HTTP(或者其他的協議)將回應和運算資料發送給Flash Player,Flash Player作為前端解釋器對資料進行解析,並做出邏輯運算。這便是Flash動態網站開發的基本原理。

隨著應用的不斷深入,各種各樣便利的工具便不斷的應運而生:從Generator到FlashSQLComponentKit,從WDDX到XML-RPC,從SOAP到AMF-RPC,Flash在通向網路應用程式的道路上不斷攀登。

AMF-RPC,也就是眾所周知的Flash Remoting MX,它不是原有的Generator的更新,而是具有實現新功能的Flash後端伺服器組件,相比起來不可同日而語。它提供了一種基礎架構,使用該架構 可以很輕鬆的連接到一個應用程式開發人員要使用的遠端服務和WEB服務。Flash Remoting MX提供了一個強大但是非常簡單的程式模型和運行時,它大大簡化了Flash影片應用程式開發。使用Flash Remoting MX,開發者不需編寫任何封裝程式碼、proxy程式碼、資料配置程式碼,就可以很輕鬆的把ActionScript用戶端邏輯的連接到遠端服務。 Flash Remoting MX把精確定義的應用程式API和服務(或者整合在C#內,或者整合在VB內,或者整合在Java內,或者整合在ColdFusion內,或者整合在 PHP內)都傳遞給Flash影片應用程式,並作為ActionScript的API。

這是一件令人激動的事情,有了Flash Remoting MX,有了Flash Player,你可以輕鬆的開發出那種具有炫彩圖像用戶介面,並由資料驅動的應用程式來,而且可以部署到各種設備上——只要該設備安裝了Flash Player。

XML,它簡單的難以置信,但它也強大的難以置信。任何從事IT行業的工作人員都不能不瞭解它,任何從事應用軟體發展的人員都必須精通它——這一點並不難。

新的Flash創作環境和運行時已經將架構完全建立在XML之上:為了更好的利用XML文檔,ActionScript程 式語言內建了XML物件,可以使用XML物件載入和解析XML文檔,並可以將資料以XML格式發送到伺服器端;而且新的資料組件也都是以XML資料格式為 基礎的,這就使得開發環境更具誘惑力,更加符合產業發展的方向。

你可以在伺服器端使用多種方法接收從Flash影片應用程式傳遞的資料,也可以從伺服器端向Flash影片應用程式傳遞 資料。方法多種多樣,但都要使用我們稱之為“中間件”的東西,傳統的中間件包括JSP、ASP、CFM、PHP、ASP.NET等,這些都是WEB網頁。

Flash Media Server伺服器(簡稱FMS)的出現給全世界的人帶來一種全新的通訊方式。有了FMS,您可以參加即時網路會議;使用FMS,您可以在工作中進行協作以及通過Internet或企業Intranet共用資訊。

使用FMS和Flash Remoting MX的整合,從而可以輕鬆連接資料庫以及驅動應用程式伺服器以建立功能更強的應用程式,並將其融入到Flash Player當中,從而為終端用戶帶來全新的富媒體應用程式體驗。

現在你可以充分利用Flash Player的強大性能建立RIA(Rich Internet Application,富Internet應用程式),而不是枯燥的網頁加動態的圖片拼湊了。更值得一提的是,Flash Remoting MX已經成為Flash伺服器端策略的核心,不管你是使用Flash創作環境作為開發工具建立富Internet應用程式,還是使用FLEX建立富 Internet應用程式,Flash Remoting MX都是你必不可少的應用核心。

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

Flash知識體系成員

是完整的知識體系,更是順承一致的知識體系。瞭解知識體系成員:

[1]【完整、準確地把握Flash動畫設計的知識體系

[2]【完整、準確地把握Flash ActionScript開發的知識體系

[3]【完整、準確地把握Flash動態網站開發的知識體系 Flash動態網站開發系列圖書


Flash動態網站開發




要瞭解Flash CS4 Professional,就經常訪問張亞飛的Blog
http://cn.zhang-yafei.com/
(簡體)
http://tw.zhang-yafei.com/
(繁體)

要正確地開發萬維網應用程式就必須瞭解《萬維網應用程式開發綱要》:

http://blog.csdn.net/zhang_yafei/archive/2008/06/22/2574348.aspx
(簡體)
http://zhang-yafei.spaces.live.com/blog/cns!5358FA09E8EB6188!1047.entry
(繁體)

要正確地認識Flash ActionScript 3.0開發,就必須首先閱讀:
飛痛都不能完整掌Flash
(簡體)
飛痛都不能完整掌Flash
(繁體)

要完整系統的學習Flash設計和開發,就必須閱讀有關Flash設計和開發的三個基本文件,並在學習過程中最終理解這三個基本檔的內容:

[01]《完整、系統的把握Flash動畫設計的知識體系》
[02]
《完整、系統的把握Flash ActionScript開發的知識體系》
[03]
《完整、系統的把握Flash動態網站開發的知識體系》
可以通過搜索引擎獲取它們。




完整、準確地把握Flash ActionScript開發的知識體系——Flash開發用戶入門必讀

完整、準確地把握Flash ActionScript開發的知識體系

——Flash開發用戶入門必讀

[摘 要]

本文明確闡述了在應用Flash ActionScript進行應用程式開發和動畫開發方面的完整知識,整理出了“基於時間軸的應用程式開發”的基本體系,從而使得Flash ActionScript開發過程開始清晰起來。完整闡述了ActionScript開發的基本知識,並糾正了錯誤的觀念,目標是為用戶建立正確的認知。

完整的知識體系總結歸納,為了使用戶能夠將開發建立在合理的符合IT工業標準的基礎之上,我們建立一個邏輯的知識體系,以利於用戶快速、準確、完整地掌握它。

[關鍵字]

基於時間軸的應用程式,完整的知識體系,正確的認知,Flash Player,Flash,IDE,ActionScript,FFC,OOP,RIA,FMS,基本語法,時間軸,影片片段,組件,用戶介面,聲音,視訊,濾鏡,網路,移動設備,即時通訊

[正 文]

很多年來,每一個應用Flash開發的用戶都有一個夙願:那就是如何完整、系統的把握Flash ActionScript應用程式開發的知識體系。

這真的是一個難題……

好在,在黑夜裏不斷的摸索中,在不斷的實踐中,問題逐漸的清晰化,並且理應逐漸的被克服。正如我在前面的文章中所言,夜很長,但天總要亮的……

瞭解和掌握Flash開發的方式

相對過去我們熟悉的開發體驗而言,Flash的開發的確是個怪物。

[1]過去我們熟悉的開發方式

如果你熟悉Visual Basic、Visual C++、Power Builder、Borland C++或者Delphi等等其中的一個,那麼你可能很快就能熟悉其他的幾個,因為它們都是基於表單(Form)的開發方式,這並不困難;如果你熟悉 ASP、JSP、PHP、ASPX等等其中的一個,那麼你也能很快熟悉其他的幾個,因為它們都是基於網頁(webPage)的開發方式。

但是,當來到Flash時卻困惑了,因為這不是過去我們所熟悉的這兩種開發方式中的一種。這導致非常多的開發者(包括我自己)過去很長的一段時間內都在黑夜中摸索,感到的是一個十分陌生的開發環境,這使得Flash開發一直離整個IT開發世界很遠。

三年前,我在拙著中提出了“Flash是基於時間軸的應用程式”的開發體系,三年後的今天,我覺得,我的確應該向大家介紹這一開發體系,因為,這一體系已經非常完整,它已經能夠被貫穿到整個開發過程中,並最終能幫助您快速、完整、準確地把握Flash ActionScript應用程式開發的知識體系。

同時,我也非常樂意向您推薦,在《Flash ActionScript X 開發入門》這本書中,這一知識體系得到了充分的體現。

現在,無論你是Visual Basic、Visual C++、Power Builder、Borland C++、Delphi等的開發者,也無論你是ASP、JSP、PHP、ASPX等網頁的開發者,你完全可以按照你過去曾經熟悉的方式來學習Flash開 發,並遵循這一開發體系,將你的Flash應用融入到整個IT世界,並不見有任何焊接的痕跡。

[2]什麼是“基於時間軸的應用程式”

“Flash是基於時間軸的應用程式”是完整的知識體系,事實上,我個人認為它是目前我所知的“唯一”正確的主線。它如同巨大的磁石將全部的開發體驗吸附到“時間軸”這個看起來如此淺顯而又深刻的“現實”中來。

時間軸的概念對於大多數應用程式開發環境而言是十分陌生的,首先,它看起來僅僅是設計人員感興趣的事,或者是僅僅用於簡單 的動畫。但是,您很快就會發現,時間軸是管理一個應用程式各種狀態的方法,它實際上是一個無價之寶。它可以作為一個Wizard(嚮導),一個表單介面, 或者是一個智慧按鈕,可以根據當前的情況顯示不同的外觀,做出不同的反應。

所有的影片片段也都有獨立的時間軸,每個時間軸或者處於播放狀態,或者處於停止狀態。如果時間軸正在播放,它將一直下去,直到遇到一個stop()命令(一個例外的情況是該時間軸僅包含一幀)。

Flash的設計人員總是使用時間軸來製作動態內容;然而,開發人員總是把影片片段的每個幀停下來,把每個幀用作不同的狀態,甚至,Flash的開發人員在舞臺上純粹使用程式碼建立互動式的動態內容。

“Flash是基於時間軸的應用程式”,理解它,這非常重要。

因為在許多看起來簡單得不可思議、但是又無法準確把握的地方,這一知識體系確發揮了無法置信的效果。例如,在任何應用程式開發中,變數的作用域都是最基本的、也是最重要的認知。如果不能正確地把握這一知識體系,實際上就很難理解變數的作用域。

實際上,在這一問題上,Flash開發人員過去的理解真的很脆弱……

理解“Flash是基於時間軸的應用程式”,當用戶在處理層、層級和深度時,以及在控制狀態時,你才可能將它們之間的關係理清,這在整個開發過程中是彌足寶貴的。

要有正確的ActionScript認知

任何語言都有一定的語法格式,這是用戶首先應該掌握的,並且應該認識到,各種語言之間是相通的,它們之間有很多的相似性: JavaScript與ActionScript很相似。但它們與其它的語言就不很相似了嗎?實際上ActionScript與VB.NET、 C#.NET、JAVA等都有很多相似性,因為它們之間都是相互借鑒的,這就為學習ActionScript帶來了便利。

只要有了基本編程知識的用戶就可以很快地學會ActionScript,但是如果沒有基本的編程知識,那麼就必須從頭開始學習基本語法了,這要稍慢一些,但也非常簡單,因為語法不過就是我們過去小學和中學所學過的加減運算等。

但是,隨後的一些事情給很多用戶帶來了麻煩和錯誤的認知,即使是那些在這一領域中有多年開發經驗的用戶也未能倖免,這真的讓人很憂心。

隨著Flash向開發領域疾速邁進的時候,新的事物也層出不窮。當ActionScript的新版本被正式的命名為2.0後,我並不知道這會為錯誤的認知埋下種子,雖然我知道這並不是“錯誤認知”的理由。

但現在你應正確的認識它們:

ActionScript 1.0和2.0是兩種截然不同的語言,它們之間不存在進化或升級的關係。

一旦瞭解並理解了這一點,實際上你就瞭解了ActionScript幾乎全部的內容,實際上,根據這種理解,你可以將這種關係推廣到ActionScript 3.0。

[1]簡單的邏輯和事實可以幫助你瞭解ActionScript

用戶要學習Flash開發,首先要接觸到的是ActionScript。過去,ActionScript有兩種語言編寫風格,這就 是AS1和AS2。前者遵循的是ECMA-262第3版所制定的規範,而後者遵循的是ECMA-262第4版制定的規範,但它們的實現只有一種,即 Flash Player VM(MM稱為AVM1)。

現在,ActionScript有了第三種語言編寫風格(ActionScript 3.0),而它的實現也增加了一種,這就是AVM2(ActionScript虛擬機第二版),雖然它也內嵌於Flash Player當中,但它與前一個ActionScript實現已有根本不同。

[2]瞭解Flash Player VM也許能幫你理解ActionScript

早在5年前,我提出Flash Player虛擬機概念;5年後的前些天,MM提出AVM(ActionScript虛擬機)。所有的應用皆集於Flash Player,這是每一個Flash的開發人員都應該理解的。

要認識AVM版本間的不同,最好的方法是與微軟CLR做一個對比。主要就是在“實現”上的區別,因為微軟CLR是通用語言運行時,它並沒有為特定的語言編寫風格(C#.NET、JS.NET或者VB.NET)專門定義一個實現。

AVM也與Mozilla的JavaScript實現不同,因為Mozilla有兩種JavaScript實現:但一種實 現使用C完成(也就是眾所周知的SpiderMonkey),另一種實現使用Java完成(也就是眾所周知的Rhino)。它們實現的是同一種語言。

AS2中的面向物件編程(OOP)功能是基於當前正由ECMA TC39-TG1開發的ECMAScript 4草案建議開發的。由於ECMA-4建議尚未成為一個標準,並且仍然在不斷更改,AS2並不嚴格遵循此規範。

AS3(同樣遵循ECMA-262第3版),應該是對AS1的完善,這一完善是十分必要的,有必要解除開發人員對ActionScript的誤解:AS2是對AS1的增強——這種看法是完全的錯誤。但也要提醒用戶注意的是,AS3不會取代AS1。

MM的意圖是很明顯的,它將使Flash Player成為像.NET那樣的CLR,各種風格的開發人員都可以在自己熟悉的環境中編寫程式碼,而在同一個容器中運行,並且可以協同工作。

現在,Flash離這一目標越來越近...................

AS2和AS1最終被編譯成相同的程式碼在同一個虛擬機內運行,而AS3保留了AS2的一些語法特點而增強了AS1,當它被編譯成新的程式碼後在新的虛擬機內運行。

不同的程式師應該選擇自己熟悉的編程風格學習一種ActionScript,另外應該注意的是:ActionScript的版本僅是對創作環境而言,對於Flash Player運行時而言,ActionScript的版本無任何意義。

[3]範例我想是最有說服力的

濾鏡是Flash 8新增的功能,用戶不但可以使用AS2語法來完成,也可以使用AS1來完成。

ActionScript 2.0程式碼:
as2

ActionScript 1.0程式碼:
as1

掌握和善用FFC

目前流行的軟體語言基本都是面向物件的開發語言,面向物件編程(OOP)的核心是應用物件(大多數的語言用“類”來建立和管理物件),Flash(不管是ActionScript 1.0抑或2.0、3.0,它們都)是面向物件的開發體系。

Flash ActionScript提供了若干內建類(各個版本的ActionScript很多內建類的用法是相同的),這些內建類組成了Flash應用的基礎,因 此也被稱為Flash Foundation Class(Flash基礎類,簡稱FFC)。

FFC包括“頂級類”和“Flash專用類”兩部分:

頂級類

頂級類被寫入到Flash Player中。這些頂級類中有一些是基於ECMAScript(ECMA-262)第3版語言規範的,也稱為核心ActionScript類。包括 Array、Boolean、Date、Error、Function、Math、Number、Object、String和System等都是核心 類,它們為應用程式提供了核心功能。

Flash專用類

與頂級類對應的是“Flash專用類”。Flash專用類提供對Flash應用程式外觀和行為的運行時控制,包括Camera、 MovieClip和LoadVars等都是Flash專用類。還有其他一些類被組織到flash.*包(例如flash.display)中。

除了可以使用FFC,用戶還可以自訂類,並且可以擴充現有的FFC,添加新的功能或者修改現有的功能,從而進行更為強大的面向物件編程(OOP)。

雖然有用戶提出ActionScript 1.0無法自訂類,但我並不認為你可以忽略FFC,這結論從前面我們講到的濾鏡範例可以得到。

現在馬上出發

作者邀您訪問他的BLOG:http://zhang-yafei.spaces.live.com

Flash知識體系成員

是完整的知識體系,更是順承一致的知識體系。瞭解知識體系成員:

[1]【完整、準確地把握Flash動畫設計的知識體系

[2]【完整、準確地把握Flash ActionScript開發的知識體系

[3]【完整、準確地把握Flash動態網站開發的知識體系



要瞭解Flash CS4 Professional,就經常訪問張亞飛的Blog
http://cn.zhang-yafei.com/
(簡體)
http://tw.zhang-yafei.com/
(繁體)

要正確地開發萬維網應用程式就必須瞭解《萬維網應用程式開發綱要》:

http://blog.csdn.net/zhang_yafei/archive/2008/06/22/2574348.aspx
(簡體)
http://zhang-yafei.spaces.live.com/blog/cns!5358FA09E8EB6188!1047.entry
(繁體)

要正確地認識Flash ActionScript 3.0開發,就必須首先閱讀:
飛痛都不能完整掌Flash
(簡體)
飛痛都不能完整掌Flash
(繁體)

要完整系統的學習Flash設計和開發,就必須閱讀有關Flash設計和開發的三個基本文件,並在學習過程中最終理解這三個基本檔的內容:

[01]《完整、系統的把握Flash動畫設計的知識體系》
[02]
《完整、系統的把握Flash ActionScript開發的知識體系》
[03]
《完整、系統的把握Flash動態網站開發的知識體系》
可以通過搜索引擎獲取它們。