- 浏览: 198776 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
hao3721:
dsfasd
ehcache 使用 -
nihaokid:
方法是不会存在在对象内存中的,它存在于方法区,建议看看jvm的 ...
Java 深层理解 父类引用指向子类对象 -
vissalan:
有一点没看明白Father f1 = (Father)s;这时 ...
Java 深层理解 父类引用指向子类对象 -
咖啡舞者:
非常感谢这种分享精神.
在BREW中实现自己的GUI(8)-IWEB的封装 -
咖啡舞者:
这是创建的代码。
在设备上调的。
界面在手机和模拟器上显示的差异
本文摘译自Sean Moore撰写的Round up of ActionScript 3.0 and Flex optimization techniques and practices ,作者Sean本来列举了51个最佳化AS3的方式,后来依据读者的回应编辑成37个小技巧。 雖然其中有些是ActionScrip程式設計師普遍知道的技巧,但整體而言,仍具有參考價值。虽然其中有些是ActionScrip程式设计师普遍知道的技巧,但整体而言,仍具有参考价值。
在翻译过程中,我把原文底下值得参考的读者回应加到「译注」部分,同时也把刊载于Open Source Flash网站上的AS3 Speed tests当中的要点纳入相关的「译注」。 此外,我把原文的NOT(不要)翻譯成「避免」,因為原本的程式寫法並沒有錯,只是在需要榨乾CPU運算效能的情況下,建議用另一種寫法。此外,我把原文的NOT(不要)翻译成「避免」,因为原本的程式写法并没有错,只是在需要榨干CPU运算效能的情况下,建议用另一种写法
1.建立阵列(Array)时,避免使用new运算子: var a = []; var a = [];
避免寫成:避免写成:
var a = new Array(); var a = new Array();
2.建立陣列會耗費比較多的時間,請謹慎使用: 2.建立阵列会耗费比较多的时间,请谨慎使用:
var vanityCollection01 : Array = new Array(); var vanityCollection01 : Array = new Array();
var vanityCollection02 : Array = new Array(); var vanityCollection02 : Array = new Array();
var vanityCollection03 : Array = new Array(); var vanityCollection03 : Array = new Array();
var vanityCollection04 : Array = new Array(); var vanityCollection04 : Array = new Array();
3.最快速的陣列複製方式(使用concat()方法): 3.最快速的阵列复制方式(使用concat()方法):
var copy : Array = sourceArray.concat(); var copy : Array = sourceArray.concat();
4.設定單一陣列元素值的執行速度比較慢: 4.设定单一阵列元素值的执行速度比较慢:
employees.push( employee ); employees.push( employee );
employees[2] = employee; employees[2] = employee;
5.讀取陣列元素值的速度是設定其值的兩倍: 5.读取阵列元素值的速度是设定其值的两倍:
var employee : Employee = employees[2]; var employee : Employee = employees[2];
譯註:Vector 結構類型(另一種形式的「陣列」),比Array 效率高。 译注:Vector结构类型(另一种形式的「阵列」),比Array效率高。 請參閱ActionScript 3.0程式最佳化(一)裡的「 Vector資料類型簡介 」一節說明。请参阅ActionScript 3.0程式最佳化(一)里的「 Vector资料类型简介 」一节说明。
6.替無須建立物件實體的類別,宣告static(靜態)成員: 6.替无须建立物件实体的类别,宣告static(静态)成员:
StringUtils.trim( 'text with space at end ' ); StringUtils.trim( 'text with space at end ' );
類別定義:类别定义:
package package
{ {
public final class StringUtils public final class StringUtils
{ {
public static function trim( s : String ) : String public static function trim( s : String ) : String
{ {
var trimmed : String; var trimmed : String;
// 方法的程式碼 // 方法的程式码
return trimmed; return trimmed;
} }
} }
} }
譯註:執行static 方法比一般物件的方法更耗費時間。 译注:执行static方法比一般物件的方法更耗费时间。
7.在應用程式的執行週期中不會改變的內容,應使用const 將它宣告為常數: 7.在应用程式的执行周期中不会改变的内容,应使用const将它宣告为常数:
public const APPLICATION_PUBLISHER : String = 'Company, Inc.'; public const APPLICATION_PUBLISHER : String = 'Company, Inc.';
8.不會被繼承的類別(亦即,其下沒有子類別),應該用final 關鍵字宣告: 8.不会被继承的类别(亦即,其下没有子类别),应该用final关键字宣告:
public final class StringUtils public final class StringUtils
9.方法與變數的名稱長度,不影響ActionScript 3.0的效能(其他程式語言也一樣): 9.方法与变数的名称长度,不影响ActionScript 3.0的效能(其他程式语言也一样):
someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch(); someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch();
譯註:有人持相反的看法,認為過長的變數名稱會影響處理效率。 译注:有人持相反的看法,认为过长的变数名称会影响处理效率。
10.把多個指派設定敘述寫成一行,不會增加效能(其他程式語言也一樣): 10.把多个指派设定叙述写成一行,不会增加效能(其他程式语言也一样):
var i=0; j=10; k=200; var i=0; j=10; k=200;
11. if 條件式和switch 條件敘述的記憶體用量相同: 11. if条件式和switch条件叙述的记忆体用量相同:
if ( 條件式) if ( 条件式)
{ {
// 處理條件 // 处理条件
} }
記憶體用量等同於:记忆体用量等同于:
switch ( 條件式) switch ( 条件式)
{ {
case 'A': case 'A':
// 處理條件A 的邏輯 // 处理条件A 的逻辑
break; break;
case 'B': case 'B':
// 處理條件B 的邏輯 // 处理条件B 的逻辑
break; break;
} }
譯註: if 條件式的執行效率優於switch。 译注: if条件式的执行效率优于switch。
12.把if 條件判斷式中,依照最有可能成立(true)的判斷結果依序安排: 12.把if条件判断式中,依照最有可能成立(true)的判断结果依序安排:
if ( 經常發生的情況) if ( 经常发生的情况)
{ {
// 處理經常發生的程式邏輯 // 处理经常发生的程式逻辑
} }
else if ( 偶爾發生的情況) else if ( 偶尔发生的情况)
{ {
// 處理偶爾發生的程式邏輯 // 处理偶尔发生的程式逻辑
} }
else else
{ {
// 處理較不常發生的程式邏輯 // 处理较不常发生的程式逻辑
} }
13. ActionScript虛擬機器(簡稱AVM)會在迴圈中,把int(整數)類型轉型成Number(數字)類型(Flash Player裡的AVM會隨著版本更新而改進,在第10版中,執行int, uint 和Number 轉換時,不會像以前那樣慢)。 13. ActionScript虚拟机器(简称AVM)会在回圈中,把int(整数)类型转型成Number(数字)类型(Flash Player里的AVM会随着版本更新而改进,在第10版中,执行int , uint 和Number 转换时,不会像以前那样慢)。
14.解決物件類型變換(promotion)、未知類型以及不正確類型的問題。 14.解决物件类型变换(promotion)、未知类型以及不正确类型的问题。
15.審慎使用uint 類型,它的效能也許不佳(Flash Player裡的AVM會隨著版本更新而改進,在第10版中,執行int, uint 和Number 轉換時,不會像以前那樣慢)。 15.审慎使用uint类型,它的效能也许不佳(Flash Player里的AVM会随着版本更新而改进,在第10版中,执行int, uint和Number转换时,不会像以前那样慢)。
var footerHex : uint = 0x00ccff; var footerHex : uint = 0x00ccff;
16.迴圈中的迭代子(iterator,亦即底下程式片段裡的變數i),請宣告成int 類型: 16.回圈中的迭代子(iterator,亦即底下程式片段里的变数i),请宣告成int类型:
for (var i: int = 0; i < n; i++) for (var i: int = 0; i < n; i++)
避免寫成:避免写成:
for (var i: Number = 0; i < n; i++) for (var i: Number = 0; i < n; i++)
譯註1 :while 迴圈的執行效能高於for 迴圈。 译注1 :while回圈的执行效能高于for回圈。
譯註2 :i++ 執行效率遠高於i = i + 1。 译注2 :i++执行效率远高于i = i + 1。 實際上,連續執行四次i++,還比執行一次i = i + 4 快了50%!实际上,连续执行四次i++,还比执行一次i = i + 4快了50%! 此外,a += b 的效率也高於a = a + b。此外,a += b 的效率也高于a = a + b。 然而,減號(-)運算子的效率就沒有明顯的差異,也就是說,i–並不會比i = i - 1還快。然而,减号(-)运算子的效率就没有明显的差异,也就是说,i–并不会比i = i - 1还快。
17.不要在int 類型資料中使用小數: 17.不要在int类型资料中使用小数:
var decimal : Number = 14.654; var decimal : Number = 14.654;
而非:而非:
var decimal : int = 14.654; var decimal : int = 14.654;
譯註1:實際上,int 類型只會保存整數。 译注1:实际上,int类型只会保存整数。
譯註2:取得最小整數、最大整數和四捨五入的Math.floor() 以及Math.round() 靜態方法的執行效率不佳,建議用底下的敘述取代它們: 译注2:取得最小整数、最大整数和四舍五入的Math.floor()以及Math.round()静态方法的执行效率不佳,建议用底下的叙述取代它们:
int(n); // 相當於Math.floor(n); int(n); // 相当于Math.floor(n);
int(n) + 1; // 相當於Math.ceil(n); int(n) + 1; // 相当于Math.ceil(n);
int(n + 0.5); // 相當於Math.round(n); int(n + 0.5); // 相当于Math.round(n);
請注意!请注意! 上面的Math.floor() 與Math.ceil() 的替代語法僅適用於正數 ,底下是負數時的運算情況:上面的Math.floor()与Math.ceil()的替代语法仅适用于正数 ,底下是负数时的运算情况:
var test1:int = int(-1.5); var test1:int = int(-1.5);
//test1 的值為-1 //test1 的值为-1
var test2:int = Math.floor(-1.5); var test2:int = Math.floor(-1.5);
//test2 的值為-2 //test2 的值为-2
取得負值的最小整數和最大整數的解決方案如下(還是比Math 物件的靜態方法快!):取得负值的最小整数和最大整数的解决方案如下(还是比Math 物件的静态方法快!):
var n:Number = -1.5; var n:Number = -1.5;
var test1:int = int(n) + (n >> 0); // 相當於Math.floor(n); var test1:int = int(n) + (n >> 0); // 相当于Math.floor(n);
//test1 的值為-2 //test1 的值为-2
var test2:int = int(n+1) + (n >> 0); // 相當於Math.ceil(n); var test2:int = int(n+1) + (n >> 0); // 相当于Math.ceil(n);
//test2 的值為-1 //test2 的值为-1
譯註3:底下的取絕對值敘述替代方案,會比Math.abs() 快很多: 译注3:底下的取绝对值叙述替代方案,会比Math.abs()快很多:
// 使用Math.abs() 取絕對值 // 使用Math.abs() 取绝对值
var n:Number = -1.5 var n:Number = -1.5
var test:Number = Math.abs(n); var test:Number = Math.abs(n);
// 底下的方案比較快! // 底下的方案比较快!
var n:Number = -1.5; var n:Number = -1.5;
if (n < 0) n = -n; if (n < 0) n = -n;
18.用乘法代替除法,這樣寫不好:5000/1000,乘上小數點比較快:5000*0.001 18.用乘法代替除法,这样写不好:5000/1000,乘上小数点比较快:5000*0.001
譯註:使用位元移位( Bitwise shift)運算子的運算效率更高: 译注:使用位元移位( Bitwise shift)运算子的运算效率更高:
// 使用右移運算子來除以2: // 使用右移运算子来除以2:
trace(10 >> 1); trace(10 >> 1);
// 輸出:5 // 输出:5
// 使用左移運算子來乘以2: // 使用左移运算子来乘以2:
trace(10 << 1); trace(10 << 1);
// 輸出:20 // 输出:20
19.將運算值儲存在變數中,供for 和while 迴圈敘述使用,不要在迴圈中重複計算: 19.将运算值储存在变数中,供for和while回圈叙述使用,不要在回圈中重复计算:
for (..){ a * 180 / Math.PI; } for (..){ a * 180 / Math.PI; }
應該在迴圈外部定義:toRadians = a*180/Math.PI;应该在回圈外部定义:toRadians = a*180/Math.PI;
20.避免在迴圈中進行運算或呼叫方法: 20.避免在回圈中进行运算或呼叫方法:
var len : int = myArray.lengh; var len : int = myArray.lengh;
for (var i=0;i<len;i++){} for (var i=0;i<len;i++){}
避免寫成:避免写成:
for (var i=0;i< myArray.lengh;i++){ } for (var i=0;i< myArray.lengh;i++){ }
21.用RegEx(正規表達式)來驗證字串;用字串物件的方法來搜尋文字: 21.用RegEx(正规表达式)来验证字串;用字串物件的方法来搜寻文字:
// 使用正規表達式來驗證美國郵遞區號的例子 // 使用正规表达式来验证美国邮递区号的例子
private var regEx:RegExp = /^[AZ][0-9][AZ] [0-9][AZ][0-9]$/i; private var regEx:RegExp = /^[AZ][0-9][AZ] [0-9][AZ][0-9]$/i;
private function validatePostal( event : Event ) : void private function validatePostal( event : Event ) : void
{ {
if( regEx.test( zipTextInput.text ) ) if( regEx.test( zipTextInput.text ) )
{ {
// 處理格式不符的程式碼 // 处理格式不符的程式码
} }
} }
// 使用字串的方法來搜尋文字 // 使用字串的方法来搜寻文字
var string : String = 'Search me'; var string : String = 'Search me';
var searchIndex : int = string.indexOf( 'me' ); var searchIndex : int = string.indexOf( 'me' );
var search : String = string.substring( searchIndex, searchIndex + 2 ); var search : String = string.substring( searchIndex, searchIndex + 2 );
22.重複使用物件(如:DisplayObject, URLLoader, …),以便維持記憶體的使用效率。 22.重复使用物件(如:DisplayObject, URLLoader, …),以便维持记忆体的使用效率。
23.遵循Flex 的組件模式: 23.遵循Flex的组件模式:
createChildren(); // 建立子物件 createChildren(); // 建立子物件
commitProperties(); // 設定屬性 commitProperties(); // 设定属性
updateDisplayList(); // 更新顯示物件清單 updateDisplayList(); // 更新显示物件清单
24.不得已時才使用Datagrids 組件(先確認你無法用一般的List 組件來完成)。 24.不得已时才使用Datagrids组件(先确认你无法用一般的List组件来完成)。
25.避免在可捲動的資料區域使用Repeater 組件。 25.避免在可卷动的资料区域使用Repeater组件。
26.避免使用setStyle()(Flex框架中,最消耗效能的呼叫之一)。 26.避免使用setStyle()(Flex框架中,最消耗效能的呼叫之一)。
27.使用太多容器(container),將大幅影響應用程式的效能: 27.使用太多容器(container),将大幅影响应用程式的效能:
<mx:Panel> <mx:Panel>
<mx:VBox> <mx:VBox>
<mx:HBox> <mx:HBox>
<mx:Label text="Label 1" /> <mx:Label text="Label 1" />
<mx:VBox> <mx:VBox>
<mx:Label text="Label 2" /> <mx:Label text="Label 2" />
</mx:VBox> </mx:VBox>
<mx:HBox> <mx:HBox>
<mx:Label text="Label 3" /> <mx:Label text="Label 3" />
<mx:VBox> <mx:VBox>
<mx:Label text="Label 4" /> <mx:Label text="Label 4" />
</mx:VBox> </mx:VBox>
</mx:HBox> </mx:HBox>
</mx:HBox> </mx:HBox>
</mx:VBox> </mx:VBox>
</mx:Panel> </mx:Panel>
28.你並不總是需要用容器當作組件的最上層(top-level)標籤,完全合法的組件並不需要最上層容器。 28.你并不总是需要用容器当作组件的最上层(top-level)标签,完全合法的组件并不需要最上层容器。
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" <mx:Image xmlns:mx="http://www.adobe.com/2006/mxml"
source="avatar.jpg" width="200" height="200" /> source="avatar.jpg" width="200" height="200" />
29.移除不必要的容器組合,以便減少嵌套的容器。 29.移除不必要的容器组合,以便减少嵌套的容器。
30.避免在標籤元素裡面使用VBox。 30.避免在标签元素里面使用VBox。 (減少贅餘程式) (减少赘余程式)
<mx:Panel> <mx:Panel>
<mx:Label text="Label 1" /> <mx:Label text="Label 1" />
<mx:Label text="Label 2" /> <mx:Label text="Label 2" />
</mx:Panel> </mx:Panel>
<mx:Panel> <mx:Panel>
<mx:VBox> <mx:VBox>
<mx:Label text="Label 1" /> <mx:Label text="Label 1" />
<mx:Label text="Label 2" /> <mx:Label text="Label 2" />
</mx:VBox> </mx:VBox>
</mx:Panel> </mx:Panel>
31.避免在mx:Application 標籤元素中使用VBox。 31.避免在mx:Application标签元素中使用VBox。 (減少贅餘程式) (减少赘余程式)
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml> <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:Label text="Label 1" /> <mx:Label text="Label 1" />
<mx:Label text="Label 2" /> <mx:Label text="Label 2" />
</mx:Application> </mx:Application>
避免寫成:避免写成:
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml> <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:VBox> <mx:VBox>
<mx:Label text="Label 1" /> <mx:Label text="Label 1" />
<mx:Label text="Label 2" /> <mx:Label text="Label 2" />
</mx:VBox> </mx:VBox>
</mx:Application> </mx:Application>
32.將recycleChildren 屬性設定成true 來改善Repeater 物件的效能(重用之前建立的物件而非重新建立新的)。 32.将recycleChildren属性设定成true来改善Repeater物件的效能(重用之前建立的物件而非重新建立新的)。
<mx:Script> <mx:Script>
<![CDATA[ <![CDATA[
[Bindable] [Bindable]
public var repeaterData : Array = ["data 1", "data 2"]; public var repeaterData : Array = ["data 1", "data 2"];
]]> ]]>
</mx:Script> </mx:Script>
<mx:Repeater id="repeater" dataProvider="{repeaterData}"> <mx:Repeater id="repeater" dataProvider="{repeaterData}">
<mx:Label text="data item: {repeater.currentItem}"/> <mx:Label text="data item: {repeater.currentItem}"/>
</mx:Repeater> </mx:Repeater>
33.影格速率(frameRate)設定在60fps 或更低的數值。 33.影格速率(frameRate)设定在60fps或更低的数值。
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml
frameRate="45"> frameRate="45">
</mx:Application> </mx:Application>
34.避免逐格操控多個顯示物件。 34.避免逐格操控多个显示物件。
35. ENTER_FRAME 事件的效率比Timer 事件高。 35. ENTER_FRAME事件的效率比Timer事件高。
public function onEnterFrame( event : Event ) : void public function onEnterFrame( event : Event ) : void
{ {
} }
private function init() : void private function init() : void
{ {
addEventListener( Event.ENTER_FRAME, onEnterFrame ); addEventListener( Event.ENTER_FRAME, onEnterFrame );
} }
避免這樣寫:避免这样写:
public function onTimerTick( event : Event ) : void public function onTimerTick( event : Event ) : void
{ {
} }
private function init() : void private function init() : void
{ {
var timer : Timer = new Timer(); var timer : Timer = new Timer();
timer.start(); timer.start();
timer.addEventListener( TimerEvent.TIMER, onTimerTick ); timer.addEventListener( TimerEvent.TIMER, onTimerTick );
} }
36.要延緩到多個影格之後才建立物件,請使用: 36.要延缓到多个影格之后才建立物件,请使用:
<mx:Container creationPolicy="queued"/> <mx:Container creationPolicy="queued"/>
37.若要隱藏物件,請使用visible 屬性: 37.若要隐藏物件,请使用visible属性:
loginButton.visible = false; loginButton.visible = false;
而非:而非:
loginButton.alpha = 0; loginButton.alpha = 0;
发表评论
-
LocalConnection使用
2012-06-01 12:22 1193转自:http://uh.9ria.com/space-446 ... -
为什么国内的公司都不敢使用Flex作为产品的平台与主要开发语言
2011-05-07 17:35 1492转http://www.k-zone.cn/zblog/pos ... -
再谈Flash Builder、Flash Catalyst与Flash Platform
2011-05-07 17:33 1304转http://www.k-zone.cn/zblog/pos ... -
有故事的网页设计——Flash网站奇妙之旅
2011-02-09 18:39 1084[转]有故 事的网页设 ... -
翻译:理解Flash Player 9垃圾回收机制,欢迎指正
2010-04-29 23:26 938关键字: flash player 原文 Und ... -
翻译:Flash Player 9资源管理策略,欢迎指正
2010-04-29 23:25 1080关键字: flash player 原 ... -
深入分析Flex [Bindable] 以及使用方法
2009-11-23 16:57 1083转自:http://gain-loss.org/? ... -
Flash Player 10 Debug Version And Other Version
2009-09-07 14:57 22291、Flash Player 10 (debugger ver ... -
FLASH + JAVA 开发实时网络游戏[编程基础篇] with Socket API
2009-05-15 13:39 2320[转帖]在MyEclipse6.0中安装FLEX插件的过程 ... -
FLASH + JAVA 开发实时网络游戏[编程基础篇] with Socket API
2009-05-15 13:36 1786FLASH + JAVA 开发实时网络游戏[编程基础篇] wi ... -
Flex 分页DataGrid
2009-03-16 16:04 1268Java代码 Local:Kelvin_LinkB ... -
Flex 开发学习笔记2 - 采用的架构 BlazeDS + Spring + Hibernate
2009-03-16 16:01 1139上篇中show了一下近期作的demo页面,现在讲一讲我使用的架 ... -
Flex 开发学习笔记2 - 采用的架构 BlazeDS + Spring + Hibernate
2009-03-16 15:53 2047自己原来的项目架构是 WebWork2 + Spring + ...
相关推荐
《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、方法和属性。 在可能的情况下,特定于 AIR 的新...
第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向对象编程 第...
通过《Flash ActionScript3.0教程示例(从入门到精通)》,学习者不仅能理解ActionScript3.0的基本语法,还能掌握实际项目开发中的技巧和最佳实践。作者章精设将理论知识与实例相结合,使学习过程更加生动和实用。...
它不仅讲解了ActionScript3.0的语言特性,还教授了游戏设计的通用原则和最佳实践。通过阅读和实践书中的例子,开发者可以逐步建立起自己的游戏框架,并具备独立完成游戏项目的能力。 压缩包中的“ActionScript 3.0 ...
本书全面介绍了ActionScript 3.0的基本语法、类的架构以及面向对象程序的设计理念。内容安排上既适合刚刚接触到ActionScript脚本语言的初学者,也照顾到学习过ActionScript之前版本有一定编程经验的读者。 鉴于...
ActionScript 3.0的另一个关键特性是与Flash Player和Adobe AIR的紧密集成,使得开发者可以创建跨平台的桌面和Web应用程序。Flex框架则提供了丰富的组件库和MXML标记语言,让非程序员也能构建用户界面。 文件...
ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA,Rich Internet Applications),尤其是在Flash平台上。它极大地提升了Flash Player和Adobe AIR应用的性能和功能,使得...
ActionScript3.0是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是在Flash平台上。它是Flash Professional、Flash Builder等工具的核心组成部分,让开发者能够为网页、桌面和移动...
ActionScript 3.0是Adobe Flash Professional、Flash Player以及Adobe AIR中的主要编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。本教程针对ActionScript 3.0的动画制作进行了深入讲解,旨在帮助...
ActionScript 3.0是Adobe Flash Professional和Flex SDK中用于创建富互联网应用程序(RIA)的主要编程语言。在“ActionScript 3.0动态绘制正弦曲线”这个项目中,开发者利用了AS3的强大功能来创建可视化图形,特别是...
《Foundation ActionScript 3.0 Animation》是一本...《foundation Actionscript3.0 Animation.pdf》这个文件很可能是这本书的电子版,包含完整的章节内容和可能的练习案例,对于自学或者参考来说是非常宝贵的资源。
在解压后的“ActionScript3.0chm完整版”文件中,你将找到详细的API参考、教程和示例代码,这些都能帮助你掌握ActionScript 3.0的核心概念和技术。无论是学习基本语法、类库使用,还是深入到高级特性,这个文档都是...
ActionScript 3.0是一种强大的编程语言,主要用于实现Flex应用的业务逻辑和控制,与MXML一起构成了Flex应用程序开发的基础。ActionScript 3.0在Flash Player运行环境中执行,借助ActionScript虚拟机(ActionScript ...
《Flash ActionScript 3.0动画教程》是一本专为学习和掌握Flash中ActionScript 3.0编程语言而设计的教程,特别适合对动画制作和互动设计感兴趣的读者。ActionScript 3.0是Adobe Flash Platform的核心编程语言,它的...
7. **Flash ActionScript 3.0动画教程_Foundation_Actionscript3.0_Animation_CN.pdf**:作为基础教程,这本书可能讲解了如何使用ActionScript 3.0进行基本动画制作,包括帧动画、补间动画、形状补间以及如何与图形...
ActionScript 3.0是在Adobe Flash CS3和Flex 2.0发布时同步推出的,作为一门强大的面向对象编程语言,它基于ECMAScript标准,提供了更高效的性能和更丰富的功能,尤其适合开发富互联网应用程序(RIA)。 1.1 ...
本书详细地介绍了 actionscript 3.0的基础知识,包括 actionscript 3.0语言、actionscript 3.0对象的操作方法、显示列表的使用、事件模型、加载外部素材、可视化编程以及利用声音和视频增强应用程序等方面的知识,并...
《ActionScript3.0 Cookbook中文版》是一本专注于ActionScript3.0编程技术的实践指南。ActionScript是Adobe Flash平台上广泛使用的脚本语言,尤其在创建互动内容、游戏和富互联网应用程序(RIA)中扮演着核心角色。...