Flex_4.0_RIA開(kāi)發(fā)詳解講義.ppt_第1頁(yè)
Flex_4.0_RIA開(kāi)發(fā)詳解講義.ppt_第2頁(yè)
Flex_4.0_RIA開(kāi)發(fā)詳解講義.ppt_第3頁(yè)
Flex_4.0_RIA開(kāi)發(fā)詳解講義.ppt_第4頁(yè)
Flex_4.0_RIA開(kāi)發(fā)詳解講義.ppt_第5頁(yè)
已閱讀5頁(yè),還剩614頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章Flex概述 Flex是Adobe公司推出的一系列工具和技術(shù) 使開(kāi)發(fā)人員可以開(kāi)發(fā)和部署可升級(jí)的富互聯(lián)網(wǎng)應(yīng)用程序 RIAs Flex提供了一種現(xiàn)代的 基于標(biāo)準(zhǔn)的語(yǔ)言來(lái)支持公共模板設(shè)計(jì) 客戶(hù)端運(yùn)行環(huán)境 編程模型 開(kāi)發(fā)模型和高級(jí)數(shù)據(jù)服務(wù) 富互聯(lián)網(wǎng)應(yīng)用程序 RIAs 是指像使用Web一樣的簡(jiǎn)單方式來(lái)部署富客戶(hù)端程序 這種程序具有比HTML更加健壯 反應(yīng)更加靈敏和互動(dòng)性更豐富的特點(diǎn) 1 1Flex簡(jiǎn)介 傳統(tǒng)的基于HTML的應(yīng)用程序部署成本低 結(jié)構(gòu)簡(jiǎn)單 簡(jiǎn)單易學(xué) 很多用戶(hù)和開(kāi)發(fā)人員于是放棄了現(xiàn)代高性能計(jì)算機(jī)能帶來(lái)的用戶(hù)體驗(yàn) 轉(zhuǎn)而追求數(shù)據(jù)的快速訪(fǎng)問(wèn) 從而喪失了一些重要的UI功能 RIA利用相對(duì)健壯的客戶(hù)端描述引擎 RIA的另一個(gè)好處是 數(shù)據(jù)能夠被緩存在客戶(hù)端 從而可以實(shí)現(xiàn)一個(gè)比基于HTML的響應(yīng)速度更快且數(shù)據(jù)往返于服務(wù)器的次數(shù)更少的用戶(hù)界面 Flex是Adobe公司近兩年推出的重量級(jí)產(chǎn)品與技術(shù) Flex的出現(xiàn)就是為了高效地開(kāi)發(fā)和部署富互聯(lián)網(wǎng)應(yīng)用程序 1 1Flex簡(jiǎn)介 Adobe公司對(duì)于Flex采取了開(kāi)源的策略 所以開(kāi)發(fā)者可以在Flex原代碼的基礎(chǔ)上修改 新版Flex4中的開(kāi)發(fā)環(huán)境已經(jīng)更名為FlashBuilder 而不再是FlexBuilder系列 Flex采用事件驅(qū)動(dòng)機(jī)制 程序的執(zhí)行過(guò)程嚴(yán)格按照事件發(fā)生的時(shí)間順序執(zhí)行 本節(jié)將介紹為讀者Flex開(kāi)發(fā)技術(shù)的特點(diǎn) 優(yōu)點(diǎn)和新特性 1 1 1Flex的技術(shù)特點(diǎn) Flex可以在企業(yè)內(nèi)部或在Web上創(chuàng)建富互聯(lián)網(wǎng)應(yīng)用程序 RIA 堪稱(chēng)最完整 最強(qiáng)大的RIA開(kāi)發(fā)解決方案 它使企業(yè)能夠創(chuàng)建個(gè)性化的豐富多媒體應(yīng)用程序 極大地提高用戶(hù)的體驗(yàn) 徹底革新人與Web的交互關(guān)系 1 增強(qiáng)用戶(hù)體驗(yàn)2 完善的開(kāi)發(fā)環(huán)境3 通用的配置環(huán)境4 企業(yè)級(jí)的特征5 消除頁(yè)面加載6 標(biāo)準(zhǔn)的架構(gòu)7 與瀏覽器兼容 1 1 2FlexSDK4的新特性 Flex4較之Flex3有了許多令人興奮的新特性 1 新增主題和組件2 增強(qiáng)布局方式3 增強(qiáng)特效和濾鏡效果4 新增雙向綁定功能5 增強(qiáng)的CSS6 增強(qiáng)的HTML模板7 增強(qiáng)的狀態(tài)8 增強(qiáng)ASDoc的支持9 運(yùn)行時(shí)共享庫(kù)10 本地化 1 2FlashBuilder的下載與安裝 FlashBuilder的安裝文件可從Adobe官方主頁(yè)下載 安裝文件版本有FlashBuilder4StandaloneInstaller版本和FlashBuilder4PluginforEclipse版本兩種 FlashBuilder4StandaloneInstaller是獨(dú)立的開(kāi)發(fā)工具的版本 FlashBuilder4PluginforEclipse是可將Flex4集成于Eclipse的安裝插件 本節(jié)介紹FlashBuilder4StandaloneInstaller的下載與安裝 1 2 1安裝FlashBuilder的系統(tǒng)要求 FlashBuilder4可以安裝在Windows操作系統(tǒng)上 也可以安裝于MacOSX操作系統(tǒng)中 安裝FlashBuilder4的最低配置如下 1 Windows操作系統(tǒng)最低要求2 MacOSX操作系統(tǒng)最低要求 1 2 2下載FlashBuilderBeta 1 瀏覽器中輸入 1 2 3FlashBuilder4Beta的安裝 1 雙擊 FlashBuilder exe 彈出選擇安裝語(yǔ)言對(duì)話(huà)框 2 單擊 OK 按鈕 彈出安裝第一步驟 簡(jiǎn)介 對(duì)話(huà)框 3 單擊 下一步 按鈕 彈出安裝第二步驟 許可協(xié)議 對(duì)話(huà)框 4 選擇 本人接受許可協(xié)議條款 單選框 單擊 下一步 按鈕 彈出安裝第三步驟 選擇安裝文件夾 對(duì)話(huà)框 1 2 3FlashBuilder4Beta的安裝 5 在文本框中輸入安裝路徑或是單擊 選擇 按鈕選擇安裝路徑 6 單擊 安裝 按鈕 完成安裝后自動(dòng)彈出安裝第五步驟 安裝完畢 對(duì)話(huà)框 7 單擊 完成 按鈕 完成安裝 1 2 4FlashBuilder的新特性 1 新增工作流模式與FlashCatalyst的支持2 新增網(wǎng)絡(luò)監(jiān)控功能3 添加單元測(cè)試的支持4 新增ASDoc的支持5 自動(dòng)生成getter和setter6 自動(dòng)生成事件處理函數(shù)結(jié)構(gòu)7 增強(qiáng)調(diào)試器功能8 新增FlashCS4組件開(kāi)發(fā)包9 導(dǎo)入和應(yīng)用諸多主題10 新增類(lèi)包瀏覽器 1 3Flex基礎(chǔ)結(jié)構(gòu)MXML介紹 開(kāi)發(fā)者使用兩種語(yǔ)言來(lái)寫(xiě)Flex應(yīng)用程序 MXML和ActionScript MXML是一種XML標(biāo)識(shí)語(yǔ)言 用于進(jìn)行組件布局 MXML中的組件包括了可視組件和非可視組件 非外觀組件可以是從服務(wù)器中讀取的數(shù)據(jù)源或用戶(hù)組件綁定至服務(wù)器中的數(shù)據(jù) 1 4建立第一個(gè)Flex4程序 下面以 HelloWorld 為第一個(gè)例子為讀者詳細(xì)說(shuō)明如何建立第一個(gè)Flex4程序 步驟如下 1 選擇 文件 新建 Flex項(xiàng)目 命令 彈出 新建Flex項(xiàng)目 對(duì)話(huà)框 2 在 項(xiàng)目名 文本框中輸入項(xiàng)目名稱(chēng) 應(yīng)用程序類(lèi)型 下拉框選擇 Web runsinAdobeFlashPalyer 3 在 主應(yīng)用程序 文本框中輸入默認(rèn)項(xiàng)目啟動(dòng)的文件名 其他可默認(rèn) 單擊 完成 按鈕 完成項(xiàng)目的創(chuàng)建 1 4建立第一個(gè)Flex4程序 4 在編輯工作區(qū)中單擊 Design 按鈕 進(jìn)入設(shè)計(jì)模式 5 從左下角的 組件 列表 選擇 控件 子文件夾下的 標(biāo)簽 控件 拖動(dòng)控件到設(shè)計(jì)模式工作區(qū) 6 選擇 標(biāo)簽 控件 然后在右下角的屬性工作區(qū)里設(shè)置 標(biāo)簽 控件的屬性 7 在代碼模式下 生成的MXML代碼 1 5編譯與運(yùn)行第一個(gè)Flex4程序 前面建立了 HelloWorld 程序 編譯與運(yùn)行程序的步驟如下 1 在想要成為程序默認(rèn)初始頁(yè)的mxml文件上右擊 選擇 設(shè)置為默認(rèn)應(yīng)用程序 2 菜單中選擇 運(yùn)行 運(yùn)行HelloWorld 命令 FlashBuilder4就開(kāi)始編譯與運(yùn)行程序 3 效果如圖1 19所示 1 6小結(jié) 本章對(duì)Flex進(jìn)行了介紹 包括Flex技術(shù)特點(diǎn) 新特性和優(yōu)點(diǎn) Flex應(yīng)用程序具有豐富的交互性 操作性和用戶(hù)體驗(yàn) 能開(kāi)發(fā)出與HTML更強(qiáng)大的網(wǎng)絡(luò)應(yīng)用程序 本章圖文并茂地講解了FlashBuilder4的下載與安裝 FlashBuilder4是Flex應(yīng)用程序開(kāi)發(fā)的利器 能快速 有效地開(kāi)發(fā)Flex應(yīng)用程序 有關(guān)FlashBuilder4的內(nèi)容將在下一章介紹 本章最后以 HelloWorld 為例 為讀者詳細(xì)講解了Flex應(yīng)用程序的開(kāi)發(fā)編寫(xiě)及編譯運(yùn)行過(guò)程 第2章熟悉開(kāi)發(fā)環(huán)境FlashBuilder4 工欲善其事必先利其器 FlashBuilder4是Adobe公司推出的集成開(kāi)發(fā)環(huán)境 FlashBuilder4工作環(huán)境是一種具有豐富特征的開(kāi)發(fā)環(huán)境 有利于開(kāi)發(fā)者開(kāi)發(fā)Flex和ActionScript應(yīng)用程序 FlashBuilder4建立在Eclipse這一開(kāi)源的集成開(kāi)發(fā)環(huán)境 IDE 上 用戶(hù)可使用強(qiáng)大的代碼編輯器 可視化設(shè)計(jì)器 調(diào)試工具等來(lái)開(kāi)發(fā)Flex應(yīng)用程序 2 1熟悉FlashBuilder4工作區(qū) FlashBuilder4工作區(qū)是開(kāi)發(fā)Flex應(yīng)用程序的工作環(huán)境 熟悉工作環(huán)境對(duì)開(kāi)發(fā)的益處是顯而易見(jiàn)的 FlashBuilder4平臺(tái)是基于Eclipse平臺(tái) 因此與Eclipse的布局風(fēng)格異常相似 FlashBuilder4平臺(tái)的特點(diǎn)是集可視化編輯與代碼編輯為一體 用戶(hù)在FlashBuilder4環(huán)境下可方便地切換設(shè)計(jì)模式和代碼模式 2 1 1Perspectives 透視 透視是一種布局風(fēng)格 與任務(wù) 編輯器和視圖相關(guān)聯(lián) 一旦切換透視 對(duì)應(yīng)的任務(wù) 編輯器或視圖就可能發(fā)生改變 FlashBuilder4包含3種透視 Flash 透視 FlashDebug 透視以及 FlashProfile 透視 2 1 2Editors 編輯器 1 MXML編輯器2 ActionScript編輯器3 CSS編輯器 2 1 3Views 視圖 視圖是用以輔助用戶(hù)管理工程和開(kāi)發(fā)項(xiàng)目 用戶(hù)通過(guò)視圖可以較直觀地處理一些需求 例如 包資源管理器 既可以管理工作區(qū)中的文件和文件夾 又可以瀏覽包和類(lèi)的結(jié)構(gòu) 2 2編譯與運(yùn)行Flex4程序詳解 MXML語(yǔ)言和ActionScript語(yǔ)言都是需要編譯后才能運(yùn)行的 FlashBuilder4開(kāi)發(fā)環(huán)境中集成了兩者的編譯器 用戶(hù)只需選擇相應(yīng)的編譯運(yùn)行命令 本書(shū)在介紹第一個(gè)Flex程序 HelloWorld 程序時(shí) 簡(jiǎn)單地介紹了了如何編譯與運(yùn)行Flex應(yīng)用程序 事實(shí)上編譯時(shí)可選的參數(shù)較多 本節(jié)將為讀者介紹詳細(xì)的編譯與運(yùn)行過(guò)程 仍以 HelloWorld 為例 講解編譯與運(yùn)行過(guò)程中的可選參數(shù) 2 3調(diào)試Flex4程序 程序常包含不可知的邏輯錯(cuò)誤 這些錯(cuò)誤不屬于編譯錯(cuò)誤 編譯器不能檢查此類(lèi)錯(cuò)誤 例如 程序中要判斷閏年 代碼的語(yǔ)法正確但判斷的方法是錯(cuò)誤的 此時(shí)編譯器不會(huì)報(bào)錯(cuò) 使用在調(diào)試功能能跟蹤代碼每一步的執(zhí)行 從而檢查邏輯錯(cuò)誤 FlashBuilder4開(kāi)發(fā)環(huán)境有強(qiáng)大的調(diào)試功能 有利于程序進(jìn)行代碼檢查 本節(jié)介紹如何調(diào)試Flex應(yīng)用程序 包括添加斷點(diǎn) 開(kāi)始調(diào)試 監(jiān)視變量等 2 3 1添加斷點(diǎn) 斷點(diǎn)的作用是使應(yīng)用程序在帶斷點(diǎn)的代碼行處中斷 從而開(kāi)始檢查代碼 同時(shí) 用戶(hù)可使用FlashBuilder4自帶的調(diào)試工具檢測(cè)并修復(fù)錯(cuò)誤 例如 變量視圖和表達(dá)式視圖 在代碼編輯器中添加斷點(diǎn)的方法很多 調(diào)試器只允許在以下代碼的斷點(diǎn)處中斷 MXML標(biāo)簽中包含ActionScript事件處理 如 其中 click 是單擊處理事件 ActionScript代碼中 可以是MXML文件中的標(biāo)簽下 也可以是ActionScript文件中 ActionScript文件中的任何代碼行 2 3 2調(diào)試程序 在設(shè)置完斷點(diǎn)后可選擇 運(yùn)行 調(diào)試 命令 選擇相應(yīng)的運(yùn)行配置開(kāi)始調(diào)試 也可單擊工具欄上的按鈕或快捷鍵F11開(kāi)始調(diào)試 調(diào)試器運(yùn)行后就會(huì)自動(dòng)進(jìn)入 FlashDebug 透視 其中比較有用的是調(diào)試視圖 在調(diào)試程序時(shí)常需要監(jiān)視某些變量的變化 從而發(fā)現(xiàn)代碼中的錯(cuò)誤 變量視圖能自動(dòng)跟蹤程序中變量的變化 2 4Flex4項(xiàng)目工程概述 Flex4現(xiàn)支持創(chuàng)建的項(xiàng)目工程有三類(lèi) Flex項(xiàng)目 ActionScript項(xiàng)目 和Flex庫(kù)項(xiàng)目 不同的工程用于開(kāi)發(fā)不同的項(xiàng)目 Flex項(xiàng)目工程是普通的RIA工程 主要用于開(kāi)發(fā)互聯(lián)網(wǎng)應(yīng)用程序 ActionScript項(xiàng)目工程主要用于開(kāi)發(fā)ActionScript類(lèi)庫(kù) Flex庫(kù)項(xiàng)目用于開(kāi)發(fā)共享庫(kù) 可以是自定義組件 也可以是ActionScript代碼 2 4 1Flex項(xiàng)目 Flex項(xiàng)目是最基礎(chǔ)配置的工程 Flex項(xiàng)目包括兩種應(yīng)用程序類(lèi)型 Web和Desktop 使用Flex框架 XML Webservices等來(lái)開(kāi)發(fā)Flex應(yīng)用程序 Web應(yīng)用程序類(lèi)型是在FlashBuilder4中編譯后會(huì)將可執(zhí)行文件 swf文件 放在HTML文件中 最終生成的是Web應(yīng)用程序 Desktop應(yīng)用程序類(lèi)型是在FlashBuilder4中編譯后會(huì)將文件放在AIR平臺(tái)中 最終生成的是AIR應(yīng)用程序 2 4 2ActionScript項(xiàng)目 ActionScript項(xiàng)目使用的是FlashAPI 而不是Flex框架 ActionScript項(xiàng)目沒(méi)有可視化的表現(xiàn) 也就是說(shuō)ActionScript應(yīng)用程序中沒(méi)有設(shè)計(jì)模式這樣的概念 ActionScript項(xiàng)目編譯后也可運(yùn)行于FlashPlayer中 2 4 3Flex庫(kù)項(xiàng)目 Flex庫(kù)項(xiàng)目用以創(chuàng)建自定義的代碼庫(kù) 代碼庫(kù)可共享于應(yīng)用程序或是其他開(kāi)發(fā)人員 Flex庫(kù)項(xiàng)目編譯后生成SWC文件 SWC文件包含組件 各種資源和catalog xml文件 SWC常被用于制作主題和制作應(yīng)用程序的外觀 一個(gè)SWC主題可以包括多個(gè)CSS文件和全部的圖片 動(dòng)畫(huà)資源 2 5FlashBuilder4常用快捷鍵 快捷鍵的作用是使得開(kāi)發(fā)工作更加高效和簡(jiǎn)單 FlashBuilder4中提供了許多快捷鍵 用戶(hù)想要更多的快捷鍵說(shuō)明 可選擇 幫助 鍵輔助 命令或 Shift Ctr L 快捷鍵查看 2 6使用Flex幫助 開(kāi)發(fā)Flex應(yīng)用程序過(guò)程中難免會(huì)遇到困難 如對(duì)某一組件的某一屬性不清楚 此時(shí)也查看Flex幫助 在安裝FlashBuilder4后 自動(dòng)安裝了Flex幫助 用戶(hù)可選擇 幫助 幫助內(nèi)容 命令打開(kāi)Flex幫助 Flex幫助左下方的圖標(biāo)表示顯示全部?jī)?nèi)容 圖標(biāo)表示顯示搜索結(jié)果 圖標(biāo)表示顯示鏈接 圖標(biāo)表示顯示書(shū)簽 單擊不同的圖標(biāo)會(huì)切換至不同的內(nèi)容 另外 用戶(hù)可在左上方的 搜索 輸入框中輸入要搜索的內(nèi)容 2 7小結(jié) FlashBuilder4是功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境 能高效地開(kāi)發(fā)Flex應(yīng)用程序 本章主要介紹了FlashBuilder4的相關(guān)基礎(chǔ) 內(nèi)容包括熟悉FlashBuilder4工作區(qū) 如何編譯運(yùn)行程序 如何調(diào)試程序 不同項(xiàng)目工程的作用 常用快捷鍵 Flex幫助的使用等 通過(guò)本章的學(xué)習(xí) 讀者會(huì)對(duì)FlashBuilder4的開(kāi)發(fā)環(huán)境會(huì)有一個(gè)比較清楚的了解 第3章ActionScript3 0基礎(chǔ) ActionScript3 0是在FlashPlayer運(yùn)行環(huán)境下的編程語(yǔ)言 是一種面向?qū)ο蟮恼Z(yǔ)言 在Flex工程中 使用ActionScript3 0語(yǔ)言作為編程語(yǔ)言 應(yīng)用程序的功能實(shí)現(xiàn)全部依賴(lài)于ActionScript3 0 3 1ActionScript3 0概述 ActionScript3 0是運(yùn)行于FlashPlayer運(yùn)行環(huán)境的編程語(yǔ)言 使用新的ActionScript虛擬機(jī)AVM2 AVM2使用新的二進(jìn)制指令集 并在性能上有很大改進(jìn) 同時(shí) ActionScript3 0使用面向?qū)ο竽P?擴(kuò)展和提高了應(yīng)用程序接口 ActionScript3 0代碼被FlexBuilder或Flash中的編譯器編譯成二進(jìn)制數(shù)據(jù) 這種二進(jìn)制數(shù)據(jù)被裝入SWF文件中 然后運(yùn)行于FlashPlayer運(yùn)行環(huán)境中 3 2使用ActionScript3 0 Flex工程中可有兩種方式使用ActionScript3 0代碼 一種是在MXML文件的標(biāo)簽下使用ActionScript3 0代碼 另一種是直接在AS文件中編寫(xiě)ActionScript3 0代碼 3 2 1在MXML文件中直接編寫(xiě)ActionScript3 0 在MXML文件中編寫(xiě)ActionScript3 0代碼 只要在MXML文件下插入標(biāo)簽 在MXML文件中的標(biāo)簽下使用ActionScript3 0 在FlexBuilder3的編輯器中輸入標(biāo)簽會(huì)自動(dòng)封閉 例如 輸入 后 自動(dòng)生成封閉區(qū)域 3 2 2在AS文件中編寫(xiě)ActionScript3 0 ActionScriptClass ActionScriptFile和ActionScriptInterface都屬于AS文件 它們?nèi)叩奈募袷蕉紴锳S格式 不同的只是其中的定義有所區(qū)別 Flex應(yīng)用程序中最常使用的AS文件是ActionScriptClass 也就類(lèi)的定義 用戶(hù)可使用ActionScriptClass創(chuàng)建向?qū)?lái)完成創(chuàng)建 3 2 3MXML中引用AS文件 MXML文件中若要引用AS文件有兩種方式 一種是引用使用標(biāo)簽中的 source 屬性 這種方式可看成是將MXML文件和AS文件分離 從而減小MXML文件的代碼 提高重用性 另外一種方法是引用ActionScriptClass 類(lèi) 使用這種方法的前提是AS文件中定義的是一個(gè)類(lèi) 3 3創(chuàng)建第一個(gè)ActionScript3 0應(yīng)用程序 用戶(hù)可以使用Flash FlexBuilder Dreamweaver等任何文本編輯器編寫(xiě)ActionScript3 0代碼 as格式文件 1 設(shè)計(jì)ActionScript3 0應(yīng)用程序2 創(chuàng)建HelloWorld工程和Greeter類(lèi)3 編寫(xiě)Greeter類(lèi)4 HelloWorld mxml文件中添加ActionScript3 0代碼5 編譯運(yùn)行程序 3 4小結(jié) ActionScript3 0是Flex應(yīng)用程序中的編程語(yǔ)言 控制Flex應(yīng)用程序的執(zhí)行 完成應(yīng)用程序的各項(xiàng)功能 在Flex工程中使用ActionScript3 0有兩種方法 一種是在MXML文件的標(biāo)簽下 一種是在AS文件中 對(duì)于大型應(yīng)用程序來(lái)說(shuō) 代碼與模型的分離能使得程序更簡(jiǎn)潔 另外 將ActionScript3 0代碼寫(xiě)入AS文件也提高了代碼的重用性 可以使用標(biāo)簽中的Source屬性來(lái)指明引用的AS文件 也可以使用引用類(lèi)的方法來(lái)使用AS類(lèi) 第4章數(shù)據(jù)類(lèi)型 程序中使用的各種變量都應(yīng)預(yù)先加以定義 即先定義 后使用 對(duì)變量的定義可以包括三個(gè)方面 數(shù)據(jù)類(lèi)型 存儲(chǔ)類(lèi)型 作用域 數(shù)據(jù)類(lèi)型表示了變量的性質(zhì) 表示形式 占據(jù)存儲(chǔ)空間等 在ActionScript3 0語(yǔ)言中 數(shù)據(jù)類(lèi)型可分為 基本數(shù)據(jù)類(lèi)型 其值不可以再分解為其他類(lèi)型 復(fù)雜數(shù)據(jù)類(lèi)型 復(fù)雜數(shù)據(jù)類(lèi)型根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類(lèi)型定義 4 1常量與變量 對(duì)于基本數(shù)據(jù)類(lèi)型量 按其取值是否可改變又分為常量和變量?jī)煞N 在程序執(zhí)行過(guò)程中 其值不發(fā)生改變的量稱(chēng)為常量 其值可變的量稱(chēng)為變量 常量和變量可與數(shù)據(jù)類(lèi)型結(jié)合起來(lái) 如整型常量 整型變量 實(shí)型常量 實(shí)型變量 字符串常量 字符串變量 在程序中常量是可以不經(jīng)說(shuō)明而直接引用的 而變量則必須先定義后使用 4 1 1直接常量和符號(hào)常量 1 直接常量整型常量 12 0 3 實(shí)型常量 4 6 1 23 字符串常量 adf b 2 符號(hào)常量符號(hào)常量是用標(biāo)識(shí)符代表一個(gè)常量 標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量名 符號(hào)常量名 函數(shù)名 數(shù)組名 類(lèi)型名 文件名的有效字符序列 4 1 2變量 程序中其值可以改變的量稱(chēng)為變量 一個(gè)變量應(yīng)該有一個(gè)名字 在內(nèi)存中占據(jù)一定的存儲(chǔ)單元 變量定義必須放在變量使用之前 變量名和變量值是兩個(gè)不同的概念 變量名是指變量的名稱(chēng) 用以區(qū)別不同的變量 變量值是指變量中包含的值 4 1 3變量賦初值 變量賦初值是指變量定義時(shí)就賦值給變量 也稱(chēng)為變量初始化 4 1 4局部變量和全局變量 局部變量也稱(chēng)為內(nèi)部變量 是在函數(shù)內(nèi)作定義說(shuō)明的變量 其作用域僅限于函數(shù)內(nèi) 離開(kāi)該函數(shù)后再使用這種變量就是非法的 主調(diào)函數(shù)中定義的變量也只能在主調(diào)函數(shù)中使用 不能在其他函數(shù)中使用 形參變量是屬于被調(diào)函數(shù)的局部變量 實(shí)參變量是屬于主調(diào)函數(shù)的局部變量 允許在不同的函數(shù)中使用相同的變量名 全局變量也稱(chēng)為外部變量 是在函數(shù)外部定義的變量 4 1 5變量的存儲(chǔ)方式 變量的存儲(chǔ)方式按是否預(yù)先分配內(nèi)存空間 可分為動(dòng)態(tài)存儲(chǔ)方式和靜態(tài)存儲(chǔ)方式 靜態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間分配固定的存儲(chǔ)空間方式 動(dòng)態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間方式 用戶(hù)存儲(chǔ)空間可以分為3個(gè)部分 程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)存放以下數(shù)據(jù) 函數(shù)形式參數(shù)自動(dòng)變量 未加static聲明的局部變量 4 1 5變量的存儲(chǔ)方式 函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址對(duì)于以上這些數(shù)據(jù) 在函數(shù)開(kāi)始調(diào)用時(shí)分配動(dòng)態(tài)存儲(chǔ)空間 函數(shù)結(jié)束時(shí)釋放這些空間 有時(shí)用戶(hù)希望函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后仍保留原值 這時(shí)就需要指定局部變量為靜態(tài)局部變量 使用用關(guān)鍵字static進(jìn)行聲明 4 2整型數(shù)據(jù) 整型數(shù)據(jù)用以存儲(chǔ)整型量 如2 60等 整型數(shù)據(jù)可以是整型常量 也可以是整型變量 4 2 1整型常量 1 十進(jìn)制整型常量2 八進(jìn)制整型常量3 十六進(jìn)制整型常量 4 2 2整型變量 1 整型變量的分類(lèi)2 整型變量的定義3 整型數(shù)據(jù)的溢出 4 3實(shí)型數(shù)據(jù) 實(shí)型數(shù)據(jù)用以存儲(chǔ)實(shí)型量 ActionScript3 0中實(shí)型數(shù)據(jù)類(lèi)型只有一種 Number型 實(shí)型數(shù)據(jù)可以是實(shí)型常量 也可以是實(shí)型變量 4 3 1實(shí)型常量的表示方法 1 十進(jìn)制形式2 指數(shù)形式 4 3 2實(shí)型變量 1 實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式2 實(shí)型變量的定義3 實(shí)型數(shù)據(jù)的舍入誤差 4 4字符串?dāng)?shù)據(jù) 字符串?dāng)?shù)據(jù)存儲(chǔ)字符串量 包括字符串常量和字符串變量 ActionScript3 0中字符串?dāng)?shù)據(jù)類(lèi)型為 String型 4 4 1字符串常量 字符串常量是指存儲(chǔ)字符串的常量 由一對(duì)雙引號(hào)或單引號(hào)封閉的字符串序列 4 4 2轉(zhuǎn)義字符 轉(zhuǎn)義字符是一種特殊的字符常量 主要用來(lái)表示那些用一般字符不便于表示的控制代碼 轉(zhuǎn)義字符以反斜線(xiàn) 開(kāi)頭 后跟一個(gè)或幾個(gè)字符 4 4 3字符串變量 字符串變量是指存儲(chǔ)字符串的變量 4 5各類(lèi)型數(shù)據(jù)之間的轉(zhuǎn)換 變量的數(shù)據(jù)類(lèi)型是可以轉(zhuǎn)換的 轉(zhuǎn)換的方法有兩種 一種是自動(dòng)轉(zhuǎn)換 一種是強(qiáng)制轉(zhuǎn)換 4 5 1自動(dòng)類(lèi)型轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換遵循以下規(guī)則 1 若參與運(yùn)算量的類(lèi)型不同 則先轉(zhuǎn)換成同一類(lèi)型 然后進(jìn)行運(yùn)算 2 轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行 以保證精度不降低 3 在賦值運(yùn)算中 賦值號(hào)兩邊量的數(shù)據(jù)類(lèi)型不同時(shí) 賦值號(hào)右邊量的類(lèi)型將轉(zhuǎn)換為左邊量的類(lèi)型 4 5 2強(qiáng)制類(lèi)型轉(zhuǎn)換 強(qiáng)制類(lèi)型轉(zhuǎn)換把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成某種數(shù)據(jù)類(lèi)型 在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題 1 括號(hào)所處的位置要正確 2 無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換 都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換 而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類(lèi)型 4 6小結(jié) ActionScript3 0中的數(shù)據(jù)類(lèi)型分為基本數(shù)據(jù)類(lèi)型和復(fù)雜數(shù)據(jù)類(lèi)型 本章詳細(xì)介紹了整型 實(shí)型 字符串型 根據(jù)數(shù)據(jù)是否是變量或常量 基本數(shù)據(jù)又可分為整型常量 整型變量 實(shí)型常量 實(shí)型變量 字符串常量 字符串變量 各數(shù)據(jù)類(lèi)型間可進(jìn)行轉(zhuǎn)換 轉(zhuǎn)換的方式有自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換兩種 自動(dòng)轉(zhuǎn)換由編譯器自動(dòng)完成 強(qiáng)制轉(zhuǎn)換由用戶(hù)確定轉(zhuǎn)換的方向 第5章運(yùn)算符和表達(dá)式 ActionScript3 0語(yǔ)言中運(yùn)算符和表達(dá)式很多 豐富的運(yùn)算符和表達(dá)式使得ActionScript3 0語(yǔ)言功能強(qiáng)大 ActionScript3 0語(yǔ)言的運(yùn)算符不僅具有不同的優(yōu)先級(jí) 而且還有一個(gè)特點(diǎn) 就是它的結(jié)合性 在表達(dá)式中 各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定 還要受運(yùn)算符結(jié)合性的制約 到底是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算 這種結(jié)合性增加了ActionScript3 0語(yǔ)言的復(fù)雜性 5 1ActionScript3 0運(yùn)算符簡(jiǎn)介 ActionScript3 0語(yǔ)言的運(yùn)算符可分為以下幾類(lèi) 算術(shù)運(yùn)算符用于各類(lèi)數(shù)值運(yùn)算 包括加 減 乘 除 求余 自增 自減 共7種 關(guān)系運(yùn)算符用于比較運(yùn)算 包括大于 小于 小于等于 共6種 5 1ActionScript3 0運(yùn)算符簡(jiǎn)介 特殊運(yùn)算符 如括號(hào) 下標(biāo) 取XML屬性 等 賦值運(yùn)算符用于賦值運(yùn)算 分為簡(jiǎn)單賦值 復(fù)合算術(shù)賦值 和復(fù)合位運(yùn)算賦值 3類(lèi) 共11種 條件運(yùn)算符用于條件求值 運(yùn)算符為 逗號(hào)運(yùn)算符用于把若干表達(dá)式組合成一個(gè)表達(dá)式 運(yùn)算符為 5 2算術(shù)運(yùn)算符和算術(shù)表達(dá)式 算術(shù)運(yùn)算符是用來(lái)進(jìn)行算術(shù)運(yùn)算的操作符 是ActionScript3 0中最基本的運(yùn)算符 使用算術(shù)運(yùn)算符連接的表達(dá)式稱(chēng)為算術(shù)表達(dá)式 5 2 1基本的算術(shù)運(yùn)算符 基本的算術(shù)運(yùn)算符包括 加法運(yùn)算符 加法運(yùn)算符為雙目運(yùn)算符 表示兩個(gè)量相加 具有右結(jié)合性 減法運(yùn)算符 減法運(yùn)算符為雙目運(yùn)算符 表示兩個(gè)量相減運(yùn)算 具有右結(jié)合性 乘法運(yùn)算符 乘法運(yùn)算符為雙目運(yùn)算 表示兩個(gè)量相乘 具有左結(jié)合性 除法運(yùn)算符 除法運(yùn)算符為雙目運(yùn)算 表示兩個(gè)量相除 具有左結(jié)合性 求余運(yùn)算符 求余運(yùn)算符為雙目運(yùn)算 表示兩個(gè)量相除求余數(shù) 具有左結(jié)合性 5 2 2算術(shù)表達(dá)式 算術(shù)表達(dá)式是用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象 也稱(chēng)操作數(shù) 連接起來(lái)的 符合ActionScript3 0語(yǔ)法規(guī)則的式子 5 2 3運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 ActionScript3 0語(yǔ)言中 運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí) 1級(jí)最高 15級(jí)最低 在表達(dá)式中 優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算 若兩個(gè)運(yùn)算符優(yōu)先級(jí)相同 按運(yùn)算符的結(jié)合性所規(guī)定的方向處理 ActionScript3 0語(yǔ)言中各運(yùn)算符的結(jié)合性有兩種 左結(jié)合性 自左至右 和右結(jié)合性 自右至左 5 2 4自增 自減運(yùn)算符 自增運(yùn)算符和自減運(yùn)算符為單目運(yùn)算 只對(duì)一個(gè)變量操作運(yùn)算 可有以下4種形式 i i自增1后再參與其他運(yùn)算 i i自減1后再參與其他運(yùn)算 i i參與運(yùn)算后 i的值再自增1 i i參與運(yùn)算后 i的值再自減1 5 3關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算符是用來(lái)對(duì)兩個(gè)量之間的關(guān)系進(jìn)行運(yùn)算的操作符 使用關(guān)系運(yùn)算符連接的表達(dá)式稱(chēng)為關(guān)系表達(dá)式 5 3 1關(guān)系運(yùn)算符 在ActionScript3 0語(yǔ)言中有以下關(guān)系運(yùn)算符 大于 大于或等于 等于 不等于 5 3 2關(guān)系表達(dá)式 關(guān)系表達(dá)式使用關(guān)系運(yùn)算符連接其他對(duì)象 由于表達(dá)式可以又是關(guān)系表達(dá)式 就會(huì)出現(xiàn)嵌套的情況 關(guān)系表達(dá)式的值是真 和 假 分別用 1 和 0 表示 5 4邏輯運(yùn)算符和邏輯表達(dá)式 邏輯運(yùn)算符是用來(lái)進(jìn)行邏輯運(yùn)算的操作符 包括與 或 非運(yùn)算 使用邏輯運(yùn)算符連接的表達(dá)式稱(chēng)為邏輯表達(dá)式 5 4 1邏輯運(yùn)算符 ActionScript3 0語(yǔ)言中提供了三種邏輯運(yùn)算符 與運(yùn)算 或運(yùn)算 非運(yùn)算與運(yùn)算符 和或運(yùn)算符 均為雙目運(yùn)算符 具有左結(jié)合性 非運(yùn)算符 為單目運(yùn)算符 具有右結(jié)合性 5 4 2邏輯運(yùn)算的值 邏輯運(yùn)算的值只有 真 和 假 兩種 可用 1 和 0 來(lái)表示 求值規(guī)則如下 與運(yùn)算 參與運(yùn)算的兩個(gè)量都為真時(shí) 結(jié)果才為真 否則為假 或運(yùn)算 參與運(yùn)算的兩個(gè)量只要有一個(gè)為真 結(jié)果就為真 兩個(gè)量都為假時(shí) 結(jié)果為假 以下代碼說(shuō)明與運(yùn)算規(guī)則 非運(yùn)算 參與運(yùn)算的量為真時(shí) 結(jié)果為假 參與運(yùn)算量為假時(shí) 結(jié)果為真 5 4 3邏輯表達(dá)式 使用邏輯運(yùn)算符連接式子就得到邏輯表達(dá)式 其中的表達(dá)式可以又是邏輯表達(dá)式 從而組成了嵌套的情形 5 5賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符包括簡(jiǎn)單的賦值運(yùn)算符 和復(fù)合賦值運(yùn)算符 如 等 使用賦值運(yùn)算符連接的表達(dá)式稱(chēng)為賦值表達(dá)式 5 5 1簡(jiǎn)單賦值運(yùn)算符和簡(jiǎn)單賦值表達(dá)式 簡(jiǎn)單賦值運(yùn)算符為 由 連接的式子稱(chēng)為賦值表達(dá)式 賦值運(yùn)算符 具有右結(jié)合性 5 5 2復(fù)合賦值運(yùn)算符和復(fù)合賦值表達(dá)式 在賦值符 之前加上其他二目運(yùn)算符可構(gòu)成復(fù)合賦值符 如 5 6逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 在ActionScript3 0語(yǔ)言中逗號(hào) 也是一種運(yùn)算符 稱(chēng)為逗號(hào)運(yùn)算符 其功能是把兩個(gè)表達(dá)式連接起來(lái)組成一個(gè)表達(dá)式 稱(chēng)為逗號(hào)表達(dá)式 逗號(hào)表達(dá)式可以嵌套 即表達(dá)式1或表達(dá)式2又是逗號(hào)表達(dá)式 整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值 并不是在所有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式 5 7位運(yùn)算符 位運(yùn)算指對(duì)二進(jìn)制數(shù)的位進(jìn)行運(yùn)算 ActionScript3 0語(yǔ)言提供了6種位運(yùn)算符 按位與 按位或 按位異或 取反 右移 5 7位運(yùn)算符 1 按位與運(yùn)算2 按位或運(yùn)算3 按位異或運(yùn)算4 求反運(yùn)算5 左移運(yùn)算6 右移運(yùn)算 5 8小結(jié) ActionScript3 0中定義了許多運(yùn)算符 這使得ActionScript3 0語(yǔ)言具有強(qiáng)大的運(yùn)算能力 運(yùn)算表達(dá)式是由運(yùn)算符連接起來(lái)的式子 其運(yùn)算方式及結(jié)果與運(yùn)算符的特性緊密相關(guān) 本章主要介紹了算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 賦值運(yùn)算符和位運(yùn)算符 算術(shù)運(yùn)算符中詳細(xì)介紹了各種基本的算術(shù)運(yùn)算符 逗號(hào)表達(dá)式及自增 自減運(yùn)算符 關(guān)系運(yùn)算符用以比較兩個(gè)量之間的關(guān)系 邏輯運(yùn)算符中包括與 或 非運(yùn)算符 賦值運(yùn)算符包括簡(jiǎn)單的賦值運(yùn)算符 和復(fù)合賦值運(yùn)算符 位運(yùn)算符中介紹了6種位運(yùn)算符的特點(diǎn)及使用方法 第6章程序設(shè)計(jì)的基本結(jié)構(gòu) 從程序流程的角度來(lái)看 程序可以分為三種基本結(jié)構(gòu) 順序結(jié)構(gòu) 分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 這3種基本結(jié)構(gòu)可以組成所有的各種復(fù)雜程序 程序設(shè)計(jì)的基本組成部分是語(yǔ)句 不同語(yǔ)句組成不同的程序結(jié)構(gòu) 例如 for語(yǔ)句 while語(yǔ)句組成循環(huán)結(jié)構(gòu)程序 6 1順序結(jié)構(gòu)程序設(shè)計(jì) 順序結(jié)構(gòu)程序是指程序中的語(yǔ)句由表達(dá)式語(yǔ)句 函數(shù)調(diào)用語(yǔ)句 控制語(yǔ)句 復(fù)合語(yǔ)句 空語(yǔ)句或賦值語(yǔ)句構(gòu)成 順序結(jié)構(gòu)是程序中最基本的結(jié)構(gòu)之一 最大的特點(diǎn)是程序是以從上至下的順序執(zhí)行 6 1 1表達(dá)式語(yǔ)句 表達(dá)式語(yǔ)句是最基本的語(yǔ)句 由表達(dá)式加上分號(hào) 組成 6 1 2函數(shù)調(diào)用語(yǔ)句 由函數(shù)名 實(shí)際參數(shù)加上分號(hào) 組成 執(zhí)行函數(shù)語(yǔ)句就是調(diào)用函數(shù)體并把實(shí)際參數(shù)賦予函數(shù)定義中的形式參數(shù) 然后執(zhí)行被調(diào)函數(shù)體中的語(yǔ)句 求取函數(shù)值 在后面函數(shù)中再詳細(xì)介紹 6 1 3復(fù)合語(yǔ)句 把多個(gè)語(yǔ)句用括號(hào) 括起來(lái)組成的一個(gè)語(yǔ)句稱(chēng)復(fù)合語(yǔ)句 在程序中應(yīng)把復(fù)合語(yǔ)句看成是單條語(yǔ)句 而不是多條語(yǔ)句 復(fù)合語(yǔ)句內(nèi)的各條語(yǔ)句都必須以分號(hào) 結(jié)尾 在括號(hào) 外不能加分號(hào) 6 1 4空語(yǔ)句 只有分號(hào) 組成的語(yǔ)句稱(chēng)為空語(yǔ)句 空語(yǔ)句是什么也不執(zhí)行的語(yǔ)句 在程序中空語(yǔ)句可用來(lái)作空循環(huán)體 6 1 5賦值語(yǔ)句 賦值語(yǔ)句是由賦值表達(dá)式再加上分號(hào) 構(gòu)成 賦值語(yǔ)句的功能和特點(diǎn)都與賦值表達(dá)式相同 它是程序中使用最多的語(yǔ)句之一 在賦值語(yǔ)句的使用中需要注意以下幾點(diǎn) 1 表達(dá)式嵌套2 變量賦初值與賦值語(yǔ)句的區(qū)別3 賦值表達(dá)式與賦值語(yǔ)句的區(qū)別 6 2分支結(jié)構(gòu)程序設(shè)計(jì) 分支結(jié)構(gòu)程序是指程序中存在分支的邏輯 需要分別處理各分支的邏輯 分支結(jié)構(gòu)程序常用的語(yǔ)句有 if語(yǔ)句 if else語(yǔ)句 if else if語(yǔ)句 switch語(yǔ)句 分支結(jié)構(gòu)是程序中最基本的結(jié)構(gòu)之一 最大的特點(diǎn)是程序是分支處理 6 2 1if語(yǔ)句 if語(yǔ)句語(yǔ)義是 如果表達(dá)式的值為真 則執(zhí)行其后的語(yǔ)句 否則不執(zhí)行該語(yǔ)句 以下代碼使用if語(yǔ)句實(shí)現(xiàn)取最大值 6 2 2if else語(yǔ)句 if else語(yǔ)句語(yǔ)義是 如果表達(dá)式的值為真 則執(zhí)行語(yǔ)句1 否則執(zhí)行語(yǔ)句2 6 2 3if else if語(yǔ)句 在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題 1 表達(dá)式形式的多樣性2 if語(yǔ)句格式3 if語(yǔ)句中使用復(fù)合語(yǔ)句 6 2 4if語(yǔ)句的嵌套 當(dāng)if語(yǔ)句中的執(zhí)行語(yǔ)句又是if語(yǔ)句時(shí) 就構(gòu)成了if語(yǔ)句嵌套的情形 在嵌套內(nèi)的if語(yǔ)句可能又是if else語(yǔ)句 這將會(huì)出現(xiàn)多個(gè)if關(guān)鍵字和多個(gè)else關(guān)鍵字的情況 這時(shí)要特別注意if和else的配對(duì)問(wèn)題 6 2 5switch語(yǔ)句 ActionScript3 0語(yǔ)言還提供了另一種用于多分支選擇的語(yǔ)句 switch語(yǔ)句 switch語(yǔ)句的意思是 計(jì)算表達(dá)式的值 并逐個(gè)與其后的常量表達(dá)式值相比較 當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí) 即執(zhí)行其后的語(yǔ)句 然后不再進(jìn)行判斷 繼續(xù)執(zhí)行后面所有case后的語(yǔ)句 若表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí) 則執(zhí)行default后的語(yǔ)句 6 3循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu) 其特點(diǎn)是 在給定條件成立時(shí) 反復(fù)執(zhí)行某程序段 直到條件不成立為止 給定的條件稱(chēng)為循環(huán)條件 反復(fù)執(zhí)行的程序段稱(chēng)為循環(huán)體用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán) while語(yǔ)句 do while語(yǔ)句 for語(yǔ)句 6 3 1goto語(yǔ)句 goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)移語(yǔ)句 goto語(yǔ)句一般不用 因?yàn)樗鼘⑹钩绦驅(qū)哟尾磺?且程序不易讀 但在多層嵌套退出時(shí) 用goto語(yǔ)句則比較合理 6 3 2while語(yǔ)句 while語(yǔ)句中的表達(dá)式是循環(huán)條件 語(yǔ)句為循環(huán)體 while語(yǔ)句的語(yǔ)義是 計(jì)算表達(dá)式的值 當(dāng)值為真 非0 時(shí) 執(zhí)行循環(huán)體語(yǔ)句 6 3 3do while語(yǔ)句 do while語(yǔ)句與while語(yǔ)句的不同在于 do while語(yǔ)句先執(zhí)行循環(huán)中的語(yǔ)句 然后再判斷表達(dá)式 6 3 4for語(yǔ)句 在ActionScript3 0語(yǔ)言中 for語(yǔ)句使用最為靈活 它完全可以取代while語(yǔ)句 for語(yǔ)句的執(zhí)行過(guò)程如下 1 求解表達(dá)式1 2 求解表達(dá)式2 若其值為真 非0 則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句 然后執(zhí)行下面第3步 若其值為假 0 則結(jié)束循環(huán) 轉(zhuǎn)到第5步 3 求解表達(dá)式3 4 轉(zhuǎn)回上面第2步繼續(xù)執(zhí)行 6 3 4for語(yǔ)句 5 循環(huán)結(jié)束 執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句 1 表達(dá)式省略2 表達(dá)式1的多樣性3 使用逗號(hào)表達(dá)式 6 3 5循環(huán)的嵌套 循環(huán)體語(yǔ)句中可以又是循環(huán)語(yǔ)句 這樣就形成了循環(huán)的嵌套 例如 for語(yǔ)句的循環(huán)體語(yǔ)句中又包括for語(yǔ)句 層層嵌套的循環(huán)在程序中經(jīng)常見(jiàn)到 但一般嵌套的次數(shù)不宜超過(guò)5次 因?yàn)檫@樣會(huì)使程序的可讀性和執(zhí)行效率變差 6 3 6幾種循環(huán)語(yǔ)句的比較 四種循環(huán)語(yǔ)句都可以用來(lái)處理同一個(gè)問(wèn)題 一般可以互相代替 其中for語(yǔ)句功能最強(qiáng)大 goto語(yǔ)句盡量少使用 while語(yǔ)句和do while語(yǔ)句的循環(huán)體語(yǔ)句中應(yīng)包括使循環(huán)趨于結(jié)束的語(yǔ)句 從而避免死循環(huán) 用while語(yǔ)句和do while語(yǔ)句時(shí) 循環(huán)變量初始化的操作應(yīng)在while和do while語(yǔ)句之前完成 而for語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化 6 3 7break語(yǔ)句 break語(yǔ)句通常用在循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句中 當(dāng)break語(yǔ)句用于do while語(yǔ)句 for語(yǔ)句或while語(yǔ)句中時(shí) 可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語(yǔ)句 break語(yǔ)句一般總是與if語(yǔ)句聯(lián)合使用 即滿(mǎn)足條件時(shí)便跳出循環(huán) 使用break語(yǔ)句應(yīng)注意的地方包括 break語(yǔ)句對(duì)if else的條件語(yǔ)句不起作用 在多層循環(huán)中 一個(gè)break語(yǔ)句只向外跳一層 6 3 8continue語(yǔ)句 continue語(yǔ)句的作用是跳過(guò)循環(huán)體中剩余的語(yǔ)句而強(qiáng)行執(zhí)行下一次循環(huán) continue語(yǔ)句只用在for語(yǔ)句 while語(yǔ)句或do while語(yǔ)句中 常與if語(yǔ)句一起使用 用以加速循環(huán) 6 4小結(jié) 與其他大部分程序一樣 ActionScript3 0語(yǔ)言中的基本結(jié)構(gòu)也包括順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 順序結(jié)構(gòu)程序由表達(dá)式語(yǔ)句 函數(shù)調(diào)用語(yǔ)句 復(fù)合語(yǔ)句 空語(yǔ)句 賦值語(yǔ)句組成 其特點(diǎn)是程序按順序執(zhí)行 分支結(jié)構(gòu)程序中有不同的邏輯分支 需要分別處理 分支結(jié)構(gòu)程序可使用if語(yǔ)句 if else語(yǔ)句 if else if語(yǔ)句 switch語(yǔ)句來(lái)實(shí)現(xiàn)分支處理 循環(huán)結(jié)構(gòu)程序中當(dāng)循環(huán)條件成立時(shí) 程序執(zhí)行循環(huán)體中的語(yǔ)句 直至循環(huán)條件不成立 循環(huán)結(jié)構(gòu)程序可使用while語(yǔ)句 do while語(yǔ)句 for語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán) 其中for語(yǔ)句功能最為強(qiáng)大 break語(yǔ)句和continue語(yǔ)句可分別用于退出循環(huán)和加速循環(huán) 第7章函數(shù) 函數(shù)是ActionScript3 0源程序的基本模塊 通過(guò)對(duì)函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能 ActionScript3 0語(yǔ)言不僅提供了極為豐富的庫(kù)函數(shù) 還允許用戶(hù)建立自己定義的函數(shù) 用戶(hù)可把算法編成一個(gè)個(gè)相對(duì)獨(dú)立的函數(shù)模塊 然后通用調(diào)用來(lái)使用函數(shù) 可以說(shuō)ActionScript3 0程序的大部分工作都是由各式各樣的函數(shù)完成的 7 1函數(shù)概述 1 函數(shù)定義角度從函數(shù)定義的角度看 函數(shù)可分為庫(kù)函數(shù)和用戶(hù)定義函數(shù) 庫(kù)函數(shù)是指由ActionScript3 0定義的函數(shù) 用戶(hù)無(wú)須定義 只需在程序中直接使用函數(shù) 用戶(hù)定義函數(shù)是指由用戶(hù)按需要自定義的函數(shù) 2 函數(shù)返回值角度有返回值函數(shù) 此類(lèi)函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個(gè)執(zhí)行結(jié)果 稱(chēng)為函數(shù)返回值 7 1函數(shù)概述 無(wú)返回值函數(shù) 此類(lèi)函數(shù)用于完成某項(xiàng)特定的處理任務(wù) 執(zhí)行完成后不向調(diào)用者返回函數(shù)值 3 函數(shù)數(shù)據(jù)傳送角度無(wú)參函數(shù) 函數(shù)定義 函數(shù)說(shuō)明及函數(shù)調(diào)用中均不帶參數(shù) 有參函數(shù) 也稱(chēng)為帶參函數(shù) 在函數(shù)定義及函數(shù)說(shuō)明時(shí)都有參數(shù) 稱(chēng)為形式參數(shù) 簡(jiǎn)稱(chēng)為形參 7 2函數(shù)定義的一般形式 函數(shù)按是否帶參數(shù)可分為無(wú)參函數(shù)和有參函數(shù) 因此函數(shù)定義的形式也分無(wú)參函數(shù)和有參函數(shù)兩種 兩者的定義差別只在于參數(shù)定義部分 7 2 1無(wú)參函數(shù)的定義形式 無(wú)參函數(shù)是指不帶有參數(shù)的函數(shù) 通常用于一些簡(jiǎn)單的處理 類(lèi)型標(biāo)識(shí)符指明了本函數(shù)的類(lèi)型 函數(shù)名是由用戶(hù)定義的標(biāo)識(shí)符 函數(shù)名后有一個(gè)空括號(hào) 其中無(wú)參數(shù) 但括號(hào)不可少 中的內(nèi)容稱(chēng)為函數(shù)體 7 2 2有參函數(shù)的定義形式 有參函數(shù)是指帶有參數(shù)的函數(shù) 在ActionScript3 0中這種函數(shù)最為常見(jiàn) 7 3函數(shù)的參數(shù)和函數(shù)的返回值 函數(shù)的參數(shù)和函數(shù)的返回值是函數(shù)定義的最重要組成部分 函數(shù)的參數(shù)決定了主調(diào)函數(shù)應(yīng)傳遞哪些量給被調(diào)函數(shù) 函數(shù)的返回值決定了被調(diào)函數(shù)的返回類(lèi)型和主調(diào)函數(shù)的值 7 3 1形式參數(shù)和實(shí)際參數(shù) 函數(shù)的形參和實(shí)參具有以下特點(diǎn) 形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元 在調(diào)用結(jié)束時(shí) 即刻釋放所分配的內(nèi)存單元 實(shí)參可以是常量 變量 表達(dá)式 函數(shù)等 實(shí)參和形參在數(shù)量上 類(lèi)型上 順序上應(yīng)嚴(yán)格一致 否則會(huì)發(fā)生類(lèi)型不匹配的錯(cuò)誤 函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的 即只能把實(shí)參的值傳送給形參 而不能把形參的值反向地傳送給實(shí)參 7 3 2函數(shù)的返回值 1 return語(yǔ)句返回函數(shù)值2 返回值類(lèi)型一致3 返回空類(lèi)型 7 4函數(shù)的調(diào)用 函數(shù)在定義后可在多處調(diào)用 函數(shù)調(diào)用的方法是使用函數(shù)名 所以在同文件中函數(shù)名不能相同 7 4 1函數(shù)調(diào)用的一般形式 ActionScript3 0語(yǔ)言中 實(shí)際參數(shù)表中的參數(shù)可以是常數(shù) 變量 其他構(gòu)造類(lèi)型數(shù)據(jù)或表達(dá)式 各實(shí)參之間用逗號(hào)分隔 7 4 2函數(shù)調(diào)用的方式 在ActionScript3 0語(yǔ)言中 可以用以下幾種方式調(diào)用函數(shù) 函數(shù)表達(dá)式 函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中 以函數(shù)返回值參與表達(dá)式的運(yùn)算 函數(shù)語(yǔ)句 函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句 函數(shù)實(shí)參 函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn) 7 5函數(shù)的嵌套調(diào)用 ActionScript3 0語(yǔ)言允許在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用 這樣就形成了函數(shù)的嵌套調(diào)用 即在被調(diào)函數(shù)中又調(diào)用其他函數(shù) 7 6函數(shù)的遞歸調(diào)用 一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱(chēng)為遞歸調(diào)用 ActionScript3 0語(yǔ)言允許函數(shù)的遞歸調(diào)用 在遞歸調(diào)用中 主調(diào)函數(shù)又是被調(diào)函數(shù) 執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身 每調(diào)用一次就進(jìn)入新的一層 7 7數(shù)組作為函數(shù)參數(shù) 數(shù)組可以作為函數(shù)的參數(shù)使用 進(jìn)行數(shù)據(jù)傳送 數(shù)組用作函數(shù)參數(shù)有兩種形式 一種是把數(shù)組元素作為實(shí)參使用 另一種是把數(shù)組名作為函數(shù)的形參和實(shí)參使用 7 7 1數(shù)組元素作為函數(shù)實(shí)參 數(shù)組元素也稱(chēng)下標(biāo)變量 是數(shù)組中的某一項(xiàng)值 因此使用數(shù)組元素作為函數(shù)參數(shù)與使用普通變量作為函數(shù)參數(shù)并無(wú)區(qū)別 只是在發(fā)生函數(shù)調(diào)用時(shí) 把數(shù)組元素作為函數(shù)的實(shí)參傳遞給形參 7 7 2數(shù)組名作為函數(shù)參數(shù) 以數(shù)組名作為函數(shù)參數(shù)是指將數(shù)組的首地址作為參數(shù)傳遞給形參 函數(shù)形參根據(jù)數(shù)組的首地址就能在內(nèi)存中找到數(shù)組的存儲(chǔ)空間 用數(shù)組名作函數(shù)參數(shù)時(shí) 要求形參和相對(duì)應(yīng)的實(shí)參都必須是類(lèi)型相同的數(shù)組 7 8小結(jié) 函數(shù)是ActionScript3 0語(yǔ)言中的重要組成部分 函數(shù)根據(jù)是否帶參分為無(wú)參函數(shù)和有參函數(shù) 函數(shù)的參數(shù)分為實(shí)參和形參兩種 其中 實(shí)參是指主調(diào)函數(shù)中的參數(shù) 形參是指被調(diào)函數(shù)中的參數(shù) 實(shí)參和形參在內(nèi)存空間里是兩個(gè)完全不同的量 因此即使實(shí)參與形參定義了相同的名稱(chēng)也不會(huì)相互影響 第8章面向?qū)ο蠡A(chǔ) 客觀世界中任何一個(gè)事物都可以看成一個(gè)對(duì)象 客觀世界是由千千萬(wàn)萬(wàn)個(gè)對(duì)象組成 對(duì)象間通過(guò)一定的渠道相互聯(lián)系 從計(jì)算機(jī)的角度看 一個(gè)對(duì)象應(yīng)該包括兩個(gè)要素 數(shù)據(jù)和操作 對(duì)象就是一個(gè)包含數(shù)據(jù)以及與這 8 1類(lèi)和對(duì)象 客觀世界中每一個(gè)實(shí)體都是對(duì)象 在ActionScript3 0中對(duì)象的類(lèi)型稱(chēng)為類(lèi) class 類(lèi)代表了某一對(duì)象的共性和特征 可以說(shuō)類(lèi)是對(duì)象的抽象 而對(duì)象是類(lèi)的具體實(shí)例 在ActionScript3 0中先聲明一個(gè)類(lèi) 然后用類(lèi)去定義若干個(gè)同類(lèi)型的對(duì)象 用戶(hù)可將類(lèi)看成是一種數(shù)據(jù)類(lèi)型 對(duì)象是這種數(shù)據(jù)類(lèi)型的變量 8 1 1類(lèi)的定義形式 在ActionScript3 0中定義一個(gè)類(lèi)就是要定義類(lèi)的成員都數(shù)據(jù)和成員函數(shù) 8 1 2類(lèi)的成員類(lèi)型 類(lèi)的成員類(lèi)型包括三大類(lèi) 一類(lèi)是私有 private 即外界不能調(diào)用 一類(lèi)是公有 public 即外界可以調(diào)用 一類(lèi)是受保護(hù) protected 此內(nèi)容將在后面小節(jié)中介紹 8 1 3調(diào)用類(lèi)中的成員 類(lèi)中的成員只有指明類(lèi)型為public后 外界才能調(diào)用 外界可以調(diào)用類(lèi)中的公有成員數(shù)據(jù)和公有成員函數(shù) 在調(diào)用類(lèi)的成員之前需要實(shí)例化類(lèi) 即創(chuàng)建類(lèi)的對(duì)象 因?yàn)轭?lèi)中成員只有在創(chuàng)建類(lèi)的對(duì)象時(shí) 才會(huì)在內(nèi)存中分配空間 8 2構(gòu)造函數(shù)和析構(gòu)函數(shù) 類(lèi)定義中一般都有兩個(gè)基本的成員函數(shù) 構(gòu)造函數(shù)和析構(gòu)函數(shù) 構(gòu)造函數(shù)一般用于在類(lèi)對(duì)象創(chuàng)建時(shí)初始化成員數(shù)據(jù) 析構(gòu)函數(shù)一般用于在類(lèi)對(duì)象清除時(shí)釋放成員所占的內(nèi)存空間 在ActionScript3 0的類(lèi)定義中構(gòu)造函數(shù)和析構(gòu)函數(shù)都可缺省 但語(yǔ)言中有默認(rèn)的 不可見(jiàn)的構(gòu)造函數(shù)和析構(gòu)函數(shù) 在類(lèi)定義中構(gòu)造函數(shù)還是非常常用的 因?yàn)橛脩?hù)經(jīng)常需要初始化成員數(shù)據(jù) 而默認(rèn)的構(gòu)造函數(shù)不初始化任何成員數(shù)據(jù) 8 2 1構(gòu)造函數(shù) 構(gòu)造函數(shù)用在在類(lèi)對(duì)象創(chuàng)建時(shí)執(zhí)行 一般用于成員數(shù)據(jù)的初始化 構(gòu)造函數(shù)與其他成員不同 不需要用戶(hù)發(fā)命令來(lái)激活它 在創(chuàng)建類(lèi)的對(duì)象時(shí)自動(dòng)執(zhí)行 構(gòu)造函數(shù)可用戶(hù)自定義 但構(gòu)造函數(shù)名稱(chēng)與類(lèi)名必須一致 以便系統(tǒng)能識(shí)別其為構(gòu)造函數(shù) 8 2 2析構(gòu)函數(shù) 析構(gòu)函數(shù)與構(gòu)造函數(shù)正好相反 當(dāng)類(lèi)對(duì)象清除時(shí)自動(dòng)執(zhí)行析構(gòu)函數(shù) 析構(gòu)函數(shù)往往用來(lái)做釋放類(lèi)對(duì)象的內(nèi)存空間 析構(gòu)函數(shù)名也與類(lèi)名相同 只是在函數(shù)名前面加一個(gè)波浪符 以區(qū)別于構(gòu)造函數(shù) 析構(gòu)函數(shù)不帶任何參數(shù) 也沒(méi)有返回值 包括void類(lèi)型 一個(gè)類(lèi)中只能有一個(gè)析構(gòu)函數(shù) 如果用戶(hù)沒(méi)有編寫(xiě)析構(gòu)函數(shù) 編譯系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的析構(gòu)函數(shù) 但這個(gè)析構(gòu)函數(shù)不進(jìn)行任何操作 所以許多簡(jiǎn)單的類(lèi)中沒(méi)有顯式的析構(gòu)函數(shù) 8 3繼承與派生 面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)程序的可重用性 在ActionScript3 0中可重用性是通過(guò)繼承機(jī)制來(lái)實(shí)現(xiàn) 繼承是一種類(lèi)的重用技術(shù) 用戶(hù)創(chuàng)建新的類(lèi)可以基于某一基礎(chǔ)類(lèi) 從而充分利用了已有資源 已存在的類(lèi)稱(chēng)為基類(lèi)或父類(lèi) 通過(guò)繼承而新生成的類(lèi)稱(chēng)為派生類(lèi)或子類(lèi) 派生類(lèi)繼承了基類(lèi)的所有數(shù)據(jù)成員和成員函數(shù) 并增加了新的成員 8 3 1派生類(lèi)定義的一般形式 派生類(lèi)繼承了基類(lèi)的全部成員 使用extends關(guān)鍵字表示此類(lèi)是某類(lèi)的派生類(lèi) 派生類(lèi)由于繼承了基類(lèi) 所以包括基類(lèi)成員和其新增的成員 8 3 2派生類(lèi)的保護(hù)成員 protected關(guān)鍵字和private public一樣是用來(lái)聲明成員的引用權(quán)限的 由protected聲明的成員稱(chēng)為保護(hù)成員 保護(hù)成員不能被外界引用 這點(diǎn)和私有成員相同 但可以被派生類(lèi)的成員函數(shù)引用 所以如果想在派生類(lèi)引用基類(lèi)的成員 可以將基類(lèi)的成員聲明為protected 8 3 3派生類(lèi)的構(gòu)造函數(shù) 派生類(lèi)從基類(lèi)繼承了非私有成員函數(shù)和數(shù)據(jù)成員 但是在建立派生類(lèi)的對(duì)象時(shí) 系統(tǒng)只執(zhí)行派生類(lèi)的構(gòu)造函數(shù) 而不會(huì)自動(dòng)執(zhí)行基類(lèi)的構(gòu)造函數(shù) 也就是說(shuō) 基類(lèi)的構(gòu)造函數(shù)是不能繼承的 如果基類(lèi)的構(gòu)造函數(shù)包含對(duì)變量的初始化 那么在建立派生類(lèi)的對(duì)象時(shí) 由于沒(méi)有執(zhí)行基類(lèi)的構(gòu)造函就會(huì)使基類(lèi)的變量未初始化 8 4接口 在大型程序設(shè)計(jì)初期開(kāi)發(fā)者往往不需要思考具體的邏輯過(guò)程 比如做菜 先想好要買(mǎi)哪些原料 大致采取怎樣的做法 是煮 蒸或是炸 不用去思考味精放多少 要燒多久等瑣碎的事情 這樣做的好處是能整體把握程序設(shè)計(jì) 避免陷入代碼實(shí)現(xiàn)誤區(qū) ActionScript3 0語(yǔ)言提供接口的概念 接口是包含一組虛方法的抽象類(lèi)型 其中每一種方法都有其名稱(chēng) 參數(shù)和返回值 接口方法中不包含任何實(shí)現(xiàn) 只定義了有哪些方法 然后通過(guò)類(lèi)來(lái)實(shí)現(xiàn)接口 一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口 8 4 1創(chuàng)建接口 在FlexBuilder3中創(chuàng)建接口的方法與創(chuàng)建類(lèi)的方法類(lèi)似 執(zhí)行 File New ActionScriptInterface 命令 彈出新建接口向?qū)?8 4 2使用類(lèi)實(shí)現(xiàn)接口 接口定義了抽象的方法 但沒(méi)有方法的具體實(shí)現(xiàn) 接口方法的具體實(shí)現(xiàn)可在類(lèi)中完成 ICommand接口中定義了excute抽象方法 GetEngCaptionCommand類(lèi)實(shí)現(xiàn)了接口中的excute方法 實(shí)現(xiàn)接口的類(lèi)中一定要包括接口中全部方法的實(shí)現(xiàn) 上述ICommand接口中只有一個(gè)execute方法待實(shí)現(xiàn) 所以類(lèi)中只實(shí)現(xiàn)了execute 若Command接口中有更多方法 類(lèi)都需要一一實(shí)現(xiàn)方法 用戶(hù)不能調(diào)用接口中方法 而且這樣做也沒(méi)有意義 因?yàn)榻涌诓惶峁┓椒ǖ木唧w實(shí)現(xiàn) 使用類(lèi)實(shí)現(xiàn)接口后 用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論