星期四, 4月 16, 2009

ASP網頁的include

雖然我不寫ASP類型的網頁,但公司伺服器卻使用微軟的系統來搭建並採用ASP作為伺服器互動的機制。正因為如此,我莫名其怪的學會了「Include(將外部程式包進來)」方法;當然,前提是你得有ASP伺服器才行。

之所以會有include方法,就是因為我們常會發現部份網頁的特定區域或程式是一模一樣的;如果客戶要求我們修改這些特定區域的時候,我們可能得一頁頁的修改這些一模一樣的網頁原始碼,會很費時費力!ASP的include則提供了另一個聰明的方法,就是把這些一樣的網頁原始碼的「片段」存放到另外一個不同的小檔案中(類似載入外部CSS檔);之後我們只要修改這個外部的小檔案,ASP伺服器就會自動更新修改過的檔案的程式片段。當網頁很多的時候,這方法就會變成一個很有力的方法!

Include的方式其實不難!只要將網頁原始碼的程式片段「剪下」再「貼」到一個新的文字檔裡(ex: sample.txt),並將文字檔的副檔名由原來的txt更改為inc,變成.inc的include檔(ex: sample.inc)。此時,在原來被剪下的程式片段位置改為底下的程式碼,ASP伺服器就會知道這是include,於是ASP伺服器會將這個外部的程式片段自動載入,然後才顯示組合後真正完整的網頁原始碼:
<!-- #include file="sample.inc" -->

換言之,ASP伺服器只要看到上面的程式碼,就會自動載入程式碼所指定的檔案(ex: sample.inc),並完全的取代掉上面的程式碼。

值得注意的是,這個include檔的路徑不能是「絕對路徑(absolute URL)」,只能是「相對路徑(relative URL)」,否則會沒有作用。

另外一點就是,當你的程式使用了太多的include之後,你會發現…這網頁很容易變成只能用ASP伺服器修改,因為太多的include檔早已讓你看不清網頁原來的樣子!所以include還是要謹慎使用呀!

星期一, 4月 13, 2009

AS2:在Flash 8用同一個影片組件播放不同的影片



雖然現在Flash已經有CS4的版本,而且已經發行很久了;但不可否認的,還是有一些人仍然在使用Flash 8的版本,一樣在使用ActionScript 2.0。今天,我就遇到一個我很久沒在用的東西:影片組件。

影片組件可以很容易的把單一影片在swf檔案中播放,只要在參數視窗裡面,將空白的"contentPath"欄位指定影片的位置即可。但如果我想要點選不同的按鈕,讓同一個播放影片的影片組件播放不同的影片,又該怎麼做呢?

Adobe Flash的線上參考說明提供了一篇文章:Playing multiple FLV files,有相關的做法可供參考。其範例如下:
import mx.video.*;
my_FLVPlybk.contentPath = "http://www.helpexamples.com/flash/video/clouds.flv";
var listenerObject:Object = new Object();
// listen for complete event; play new FLV
 listenerObject.complete = function(eventObject:Object):Void {
  if (my_FLVPlybk.contentPath == "http://www.helpexamples.com/flash/video/clouds.flv") {
   my_FLVPlybk.play("http://www.helpexamples.com/flash/video/water.flv");
  }
};
my_FLVPlybk.addEventListener("complete", listenerObject);

其中,最值得注意的就是「contentPath」,指的就是影片路徑,用以告知影片檔案在何處。假設我們指定播放影片的影片元件的實體名稱為「my_FLVPlybk」,那麼只要在後面的contentPath指定影片位置,即可更新影片元件播放的內容。換言之,只要設定按鈕在按下去之後,指定新的contentPath給影片,就可以讓影片播放新的影片內容了。