You are on page 1of 9

建立日期 2006/11/26

第五講 用動態文字及CSS作圖文整合 親民視傳系助理教授 陳弘正

在開始這講之前,老師想先說明一些學習上的想法,這學期一開始時,老師所開
的書單,如果同學們認真看待的話,小正正那本書和我們所推蔫的教科書都是很
好的自修內容,老師認為,我們上課的內容,因為顧及時效性,無法非常仔細的
講解每一講背後所需的背景知識,但老師希望同學們能自發的學習並補上所缺的
部分,這一點是希望同學們能領會的。
好了,回歸正題,接下來我們想講的部份,是有關於如何在Flash中製作圖
文整合的網頁,這部份的內容,當然,若我們使用影片片段的方式也可作出圖文
整合的效果 1 ,但自從Flash MX 2004 之後,Flash另外提供了一個方法,可以讓
圖文整合在Flash中變的更簡單(當然,同學們可能會認為有些困難)
,那就是利
用在動態文字物件(dynamic text field) 裏所支援的HTML語法,加上可在HTML
語法中使用的階層式樣式表 (Cascading Style Sheet, CSS)及內嵌圖片(或SWF檔)
的功能,即可完成圖文整合網頁的目標;而利用此方法製作的網頁,外觀非常神
似用Dreamweaver製作的網頁。
在接下來,我們另外開啟一個portfolio.fla檔案,最終成果輸出成swf檔,再
利用上一講所教的動態載入的方法可直接嵌入主檔案.fla中。

1. 網站規格與圖層安排

a. 這裏我們製作的分頁非常簡單,只有三個圖層:action, content, button,其中,


button 圖層中含有三個按鈕,分別指向不同的頁面內容(這一點我們待會會
用熟悉的按鈕事件來加以呼叫載入);

b. 另外,最重要的是,在 content 圖層中,我們加入了一個動態文字框,其實


體名稱為 portfolio_txt,如下圖:

1
同學們自行思考如何製作,用影片片段製作圖文的方法其實和一般的幕前排版軟體類似,優點
是可精確控制圖文所在位置,缺點則是必須整合較多的元件來製作,這部份之後有機會再詳細介
紹。

1
建立日期 2006/11/26

動態文字框

HTML

其中,由動態文字需命名實體名稱,我們亦可以了解到,其實動態文字與
影片片段一樣是物件的一種,而至於其對應的屬性與方法請參考小正正的
書第六章,這裏老師列出 Flash 文件中關於文字欄位(TextField)物件的說明:
(請仔細閱讀)

(i). 文字欄位可分為三種:靜態文字、動態文字及輸入文字。後兩者可由 Flash


執行階段從語法、外部檔案或使用者輸入來完成,以動態文字較為常用。

2
建立日期 2006/11/26

(ii). 另外,關於文字欄位的格式設定,在上述星號段落中,已解釋十分清楚,
在 這 裏 簡 單 說 明 , 動 態 文 字 的 格 式 設 定 依 Flash 發 展 順 序 為 先 使 用
TextFormat 再進一步進展到使用可使用部份 StyleSheet 及 HTML 語法。另
外,我們也可以在 HTML 格式之內,內嵌 GIF 及動態的 Flash。

2. 接下來,我們就來介紹如何用語法來達成上述圖文整合的任務。

a. 簡單講,接下來還是要使用與上一講所提到所謂物件導向程式設計(OOP)
的概念,本講中我們要使用另外兩個不同的物件來達成任務,分別是:

(i). 使用 TextField.StyleSheet()物件來載入外部階層樣式表檔案(external CSS)。

(ii). 使用 LoadVars()物件來載入作為資料來源的外部文字檔(external text)。

※ 值得注意的是,這裏,我們會先就此二物件如何載入外部資料的過程詳
加說明,至於外部CSS檔(mystyles.css)與外部資料檔(portfolio.txt)的語法及內
容我們放在這後面再另外說明。

b. 首先我們介紹外部CSS的載入語法:
這裏的TextField.StyleSheet() 物件的使用方法,跟上一講我們所提的物件使
用方法類似 2,一樣要經過三個主要的步驟:
(一)物件類別建構(object class
constructor)(二)載入資料(這裏是外部CSS檔)(三)onLoad事件處理函
式 3 ,分述如下:

(i). 物件類別建構
var portfolio_ss:TextField.StyleSheet = new TextField.StyleSheet(); (1)

(ii). 載入外部 CSS 檔


portfolio_ss.load("/styles/mystyles.css"); (2)
這裏我們將外部 CSS 檔 mystyles.css 存放在獨立的目錄 styles 中。(關於
mystyles.css 的撰寫,容稍後再介紹。)

(iii). 接下來講比較麻煩的部份,就是 onLoad 事件處理函式,程式碼如下:

2
請參照第四講第三頁下半。
3
這裏的物件TextField.StyleSheet() 不需另外使用偵聽器,它本身就配置有onLoad的事件處理函
式。

3
建立日期 2006/11/26

請注意,這裏的 onLoad 函式中有一個『引數 (input parameter)』”success”,


這個引數的作用是,當外部 CSS 檔成功的載入 portfolio_ss 物件後,success
值會傳入”1”,反之,若載入失敗則傳入”0”。
當載入成功時,會進行下列兩行語法,首先是將 portfolio_ss 的內容(就
是 mystyles.css)
指派給動態文字物件 portfolio_txt 的樣式表屬性.styleSheet;
portfolio_txt.styleSheet = portfolio_ss; (3)
其次,則會告知 LoadVars()物件 portfolio_lv,可以對外部文字檔 portfolio.txt
進行載入的動作了。
portfolio_lv.load("/text/portfolio.txt"); (4)
當然,若載入失敗,則顯示『error loading CSS!』作為訊息。

(iv). 或許有同學會覺得有些奇怪,明明LoadVars物件portfolio_lv尚未建立,為何
(4)式可進行載入外部資料的動作?關於這點,其實是物件導向程式的一個
重要的特點,就是,在我們撰寫的程式中,雖然有撰寫的前後差別(行號
不同)
,但當Flash對程式進行編譯時(Ctrl+Enter)
,其實Flash對每一行語法
是一視同仁的,意思就是,(4)式的portfolio_lv事實上已被建構了 4 (雖然
語法在後面才寫出來)。

(v). 最後,附上 Flash 文件中關於 TextField.StyleSheet 物件的說明

4
此即所謂『物件』之意,就好像我們要拿工具箱裏的工具,雖然拿出來使用的順序有先後(ex.
portfolio_ss先,portfolio_lv後),但事實上,每一個工具早就準備好在工具箱裏了。

4
建立日期 2006/11/26

c. 接下來我們來看外部資料的載入:

(i). 這個部分與前面原理相似,語法如下:

第 17 行是 LoadVars 物件類別建構,第 18-24 行則是 portfolio_lv 的 onLoad


事 件 函 式 , 與 前 面 一 樣 , 此 函 式 有 一 引 數 success , 表 明 外 部 資 料 檔
portfolio.txt 是否成功載入 portfolio_lv;若是,則 portfolio_txt 其中已載入的
變 數 ( 裏 面 有 全 部 圖 文 的 內 容 ) portfolio1 則 會 顯 示 在 動 態 文 字 物 件
portfolio_txt 裏面(藉由其屬性.htmlText);若否,則顯示『error getting
HTML!』的訊息。

(ii). LoadVars()物件是 AS 2.0 中新增的功能,未來有機會我們會介紹更多它的應


用 , 它 目 前 主 要 是 廣 泛 的 應 用 在 網 站 通 訊 中 (Flash remoting, Flash
Communication Server 等)

(iii). 順便,我們一併介紹主場景的按鈕事件,這部分的語法相信大家都已耳熟
能詳了吧!(按按鈕則動態載入分頁內容,其分屬於不同變數之圖文內容。)

5
建立日期 2006/11/26

d. 關於外部 CSS 的語法:

(i). 關於 Flash 中的 HTML+CSS 的模式,其實只支援 CSS 1.0 的部份語法,可


以說,只是陽春版的 CSS,但以基本圖文整合頁面來說已足夠矣!請同學
參考 Flash 說明檔,其中有非常完整的說明。

請注意,上文中所題到所謂的『選取器(selector)』其實就是 CSS 中最核心


的概念,在一份 CSS 檔案中,其實就是許多組關於不同選取器之樣式的組
合,以本講中所用的選取器,我們定義了三個,包括 portfolioTitle、
portfolioSubTitle 及 portfolioText 分別定義了主標題、副標題及本文的樣
式,每個選取器中所可使用的樣式規定請參考上一頁關於 CSS 支援的規格
說明。

6
建立日期 2006/11/26

(ii). 上表的語法的右半段為錨點標籤<a>的樣式規定,包括其各種狀態。另外,
關於其它 Flash 所支援的 HTML 標籤中 CSS 可加以使用的樣式則列表如下:

其中,p 為段落(paragraph)樣式,body 為整體樣式,li 為項目符號樣式。

(iii). 最後,我們終於要打開最麻煩的一個檔案了!請用 Dreamweaver 開啟


portfolio.txt,我們發現裏面密密麻麻的一堆文字,好不嚇人!別慌,我們這
就一一說明:

z 先找出&portfolio1, &portfolio2 及&portfolio3 三組字,&定義了變數的

7
建立日期 2006/11/26

名稱,而其等號後面接的則是它對應的內容:
&動態文字物件變數名稱=變數內容
我們也發現一個資料檔中可放置任意數目的動態文字變數。

z 段落及內容指定:
<p class="portfolioTitle">龍捲風研究</p>
其中代表的含意為:
<段落 類別=主標題>主標題內文,</段落>
其中同學們要特別注意標籤的封閉問題,即<p>…</p>一定要兩兩對好。

z <br>代表換行,好用,但要注意行距會太寬。

z 圖片內嵌標籤的使用,如下例:
<img src="/image/currentPage.swf" align="right" width="328" height="199">
詳細用法在此列出 Flash 說明如下:

可別小看這個影像標籤的功能,請同學們仔細想想,它的功能可真不少哦!
至於可以怎麼用?完全看同學們的想像力囉!(老師暫且賣個關子)

3. 好,真是夠了,應該大功告成了吧!換同學們上場囉!下圖為整合至主網頁
的畫面。(頁面顯示為 portfolio1 的變數的內容)

8
建立日期 2006/11/26

另一個按鈕對應的內容(變數為 portfolio2)

That’s ALL~

You might also like